至此,已成功将uC/OS-II 2.86操作系统移植到野火stm32开发板。
3.3 各任务模块设计
该系统为多任务系统,总共有启动任务Task_START、LCD显示任务Task_LCD、红外检测任务Task_INFRARED、摄像头任务Task_CAMERA、MP3报警任务Task_MP3、短信发送任务Task_SMS。总共6个任务。下面将对各任务的设计进行详细介绍。
3.3.1 启动任务Task_START
当系统运行后,便会调用OSTaskCreate函数创建启动任务Task_START。在启动任务中只做一件事情:创建LCD显示任务Task_LCD,用来进行屏幕显示。随后启动任务将进入延时死循环。
启动任务Task_START的流程图如图 3.4所示。
3.3.2 LCD显示任务Task_LCD
LCD显示任务主要用来显示系统欢迎界面,并判断用户的触摸点,及时作出操作响应。任务启动后首先对LCD和触摸模块进行初始化,然后进行触摸校准。当触摸校准成功后,显示系统欢迎界面和启动按钮。此时循环判断触笔是否按下,并根据按下的位置作出相应的操作。若当前为关闭状态,则启动红外检测任务,置启动标志为1,并改变按钮为“关闭”;若当前为启动状态,则删除红外检测任务Task_INFRARED、摄像头任务Task_CAMERA、MP3报警任务Task_MP3和短信发送任务Task_SMS,启动标志请0,并改变按钮为“启动”。如此循环下去。
LCD显示任务Task_LCD的流程图如图 3.5所示。
3.3.3 红外检测任务Task_INFRARED
红外检测任务用来检测是否有异常动静。将红外模块的数据引脚与开发板的PA2引脚相连,红外检测任务循环检测PA2,当PA2为1时,点亮LED2,并依次创建摄像头任务、MP3报警任务和短信发送任务,实现报警功能;当PA2为0时,熄灭LED2(LED2为报警状态指示灯)。
红外检测任务Task_INFRARED的流程图如图 3.6所示。
3.3.4 摄像头任务Task_CAMERA
摄像头任务用来拍摄现场照片,并保存到TF卡中。摄像头任务启动后,首先进行各种初始化工作:LCD初始化、TF卡初始化、SCCB配置、FIFO配置、传感器初始化和VSYNC初始化。各种初始化工作全部完成后,对图像进行采集,并显示在LCD上。接下去是截图工作,设置文件名为“pic%d”,将LCD屏上的图像保存在TF卡中。如果TF卡中已有同名文件,则文件名自加1之后再次保存,直到保存成功为止。任务完成后,用OSTaskDel函数将自己删除,以节省系统资源。
摄像头任务Task_CAMERA的流程图如图 3.7所示。
3.3.5 MP3报警任务Task_MP3
顾名思义,MP3报警任务就是播放报警声,以达到赶走小偷的目的。由于之前摄像头任务在屏幕上显示了图像,所以当摄像头任务结束后,需要重新初始化LCD屏,恢复系统启动完毕后的界面。然后判断是否有删除任务请求,如果有则删除自己;如果没有,则初始化MP3,并播放TF卡中的alarm.mp3文件。MP3播放完毕后,调用OSTaskDel函数将自己删除(为了防止万一MP3任务没有删除成功,添加了判断是否有删除任务请求的代码,在必要时可以通过其他任务对MP3任务再次进行删除操作)。
MP3报警任务Task_MP3的任务流程图如图 3.8所示。
3.3.6 短信发送任务Task_SMS
短信发送任务的功能是发送报警短信“住宅遭到非法入侵!”到指定手机。由于需要使用串口将AT指令发送给GPRS模块,在任务启动时要对串口进行初始化。与MP3任务一样,为了防止短信发送任务执行完毕后没有删除成功,添加了判断是否有删除任务请求的代码,在必要时可以通过其他任务对该任务再次进行删除操作。串口初始化完毕后,判断是否有删除任务请求,如果有则删除自己;如果没有,则向串口发送一系列的AT指令,控制GPRS模块发送短信到手机。发送完毕后删除任务。 GPRS家庭防盗报警系统的设计+流程图(10):http://www.youerw.com/zidonghua/lunwen_3457.html