![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 872238
|
在起始任务中建立了一系列信号量来协调各个任务的执行,各信号量的作用如表2所示。
![](http://embed.chinaitlab.com/UploadFiles_4615/200810/20081009100641154.jpg) 3.2.3 主要任务描述
首先建立一个主函数(main函数),在主函数中调用OSInit()函数初始化μC/OS-II,然后建立第一个任务(起始任务),最后调用OSStart()函数启动多任务。当然,在建立主函数之前必须定义各个任务的堆栈,系统的全局变量和相关宏。主函数的程序清单如下:
![](http://embed.chinaitlab.com/UploadFiles_4615/200810/20081009100641380.jpg)
起始任务(StartTask) 是系统建立的第一个任务,他主要有3个功能:完成对定时器、外中断0和串行口的初始化;建立系统所要用到的信号量;建立系统的其他任务。
起始任务部分程序清单如下:
![](http://embed.chinaitlab.com/UploadFiles_4615/200810/20081009100641501.jpg)
电机开窗任务(openwintask) 在电机开窗任务中首先等待信号量sem_open.该信号量是由煤气处理任务、红外遥控处理任务和手动开窗任务发送的。如果其他任务发送了该信号量,程序就设置电机转动方向,并控制p3.4送出电机转动脉冲,直到窗户被打开。
电机关窗任务(closewintask) 该任务必须在信号量sem open有效时才会被激活。信号量sere_open有下雨处理任务、红外遥控处理任务和手动关窗任务发送。 |
|