基于stm32的智能小车设计
开始系统初始化前进否检测是否出界是是小车右转是否左侧出界否小车右转循迹子程序结束
图2.31 循迹子程序流程图
我们在循迹程序设计中,主要工作为: 1、配置管脚与红外探测器的对应关系
当红外探测器模块在黑带上方时,输出为0。当红外探测器模块在白色上方时,输出为1。因此我们采用中断的方式进行循迹,因为采用的是4路循迹,所以我们需要4个管脚与其一一对应,对应关系如下表:
表2-3管脚与红外探测器位置对应关系表 管脚名称 PE1 PE2 PE3 PE4
红外探测器位置
左 最左 右 最右
在配置好管脚与红外位置关系之后,我们就需要进行中断初始化,中断程序上文2.1.4节中已经讲过,我们在这里就不做介绍。 2、编写中断服务函数
我们在中断初始化之后,就需要写中断服务函数啦,我们就以PE1为例,当
- 31 -
基于stm32的智能小车设计
PE1的值发生变化时,我们就进入中断服务函数,在中断服务函数中判断红外探测器是否在黑带上方,如果在,此时我们需要使小车向左转,如果不在黑带上方,小车就继续前进。其中断服务函数代码如下:
#define KEY3 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_1) void EXTI1_IRQHandler(void) {if(KEY3==0)
{Right_Low();}
EXTI_ClearITPendingBit(EXTI_Line1);} //清除LINE2上的中断标志位
- 32 -
基于stm32的智能小车设计
3.软件调试
上文提到了各个模块的电路设计及其程序设计,本章就根据各个模块的电路设计进行相应的编程。我们使用keil3软件进行程序仿真,然后使用mcuscip软件把我们得到的目标文件烧到处理器中,即程序下载。 3.1 程序仿真
RVMDK源自德国的KEIL公司,是RealView MDK的简称。支持ARM7,ARM9,和最新的Cortrx-M3核处理器,自动配置启动代码,具有强大的软件仿真功能,而且具有启动代码小,性能高的优点,软件keil3的操作主界面如图3.1所示:
图3.1 Keil主界面
在程序仿真中,我们只能观察PC7脚位的电平变化,来判断是否满足超声波的发射条件,而对于超声波发射到接受的高电平持续时间t,我们在程序仿真中是无法观测到的。因此我们只能通过对硬件进行测试,来完成对整个产品设计的考核。PC7的软件仿真结果如下图所示:
图3.2 PC7脚电平仿真图
- 33 -
基于stm32的智能小车设计
3.2程序下载
串口下载软件使用mcuisp,该软件属于第三方软件,由单片机在线编程网提供,该软件启动界面如图3.2所示:
图3.2 mcuisp启动界面
我们使用mcuisp软件进行程序下载,程序下载图如下所示:
图3.3 mcuisp程序下载图
- 34 -
基于stm32的智能小车设计
4.系统测试
在程序调试中,我们知道PC7的电平变化已经满足了超声波的发射条件,我们本节就是对硬件进行测试,验证本次方案是否成功。小车实物图如下所示
图4.1 智能小车实物图
当小车前方遇到障碍时,小车舵机左转,观测左侧是否有障碍物,测试图如下:
图4.2 智能小车检测障碍图
小车检测到前方有障碍时,舵机左转,检测小车左方是否有障碍,如果无,则小车左转,测试图如下图所示:
图4.3 智能小车避障图
循迹模块采用的是中断的方式工作的, stm32微处理器通过采集红外探测器
- 35 -