新闻中心

EEPW首页>嵌入式系统>设计应用> 基于Small RTOS51的多任务串行通信研究

基于Small RTOS51的多任务串行通信研究

作者: 时间:2009-07-09 来源:网络 收藏

2.1 多的实现
根据所要完成的功能,系统可由1个串口中断服务程序和4个用户来实现:
串口中断服务程序,当数据到达串口接收缓冲区并产生中断时,该中断服务程序负责从接收缓冲区读取数据,并加入用户自定义的接收缓冲队列。若完整地接收了一个数据包,则向数据处理发送信号量,表明有数据包等待处理,否则中断服务程序结束。串口中断下次到来时,继续由该中断服务程序接收串口数据。数据处理任务,执行时首先无限期等待中断服务程序发送信号量,成功获取信号量后,从自定义的接收缓冲队列中取出数据包进行数据解码,并通过I2C总线发送数据到显示电路。
看门狗任务,每次运行都反转单片机P89V51RD2输出到看门狗电路的I/O引脚电平(喂看门狗),表明P89V51RD2内部程序正常运转,以确保看门狗电路不会将P89V51RD2复位,然后使本身进入等待状态,等待时间到后再次运行。
键盘扫描任务,负责扫描键盘电路,检测是否有按键被按下,若检测到某一按键被按下,则获取键值,并发送消息给按键处理任务。
按键处理任务,执行时首先无限期等待按键扫描任务发送消息,成功获取消息后,根据按键值(消息内容)和当前系统状态生成一串命令数据,通过串口向远端发送。
系统中程序的执行顺序如图3所示。首先从主程序即main()函数开始执行,在main()函数中完成实时操作系统、系统定时器、串口、消息、变量和外围设备的初始化工作,然后创建用户任务,最后主程序放弃CPU资源,任务优先级最高的任务开始执行。

实时操作系统支持16个优先级,0为最高优先级,15为最低优先级。程序中将看门狗任务置为最高优先级,因为它必须定期向看门狗电路输出喂狗信号。将它置为最高优先级,使其优先运行,可以保证单片机P89V51RD2不会被看门狗电路复位。为了能及时处理串口中断服务程序读取的数据包,数据处理任务也应当具有比较高的优先级。同样,在检测到有按键被按下时,考虑到按键处理的实时性,也不能将按键处理任务的优先级设得太低。可以将键盘扫描任务置为最低优先级,当没有数据到达串口,在看门狗任务运行的间隙,键盘扫描任务一直运行,一旦检测有按键被按下,立即发送消息给按
键处理任务,按键处理任务获得消息后解除挂起状态,抢占CPU资源开始运行。因手工连续按下两次按键的时间间隔远大于按键处理任务进行一次数据处理的时间,故而这样的优先级设置既保证了键盘操作能及时被处理,又不影响检测连续的键盘操作。
2.2 任务间的与同步
应用中,串口中断服务程序与数据处理任务之间、键盘扫描任务与按键处理任务之间都需要进行同步和,前者使用信号量进行同步和,后者使用消息。

串口中断服务程序接收到一个完整的数据包后,发送一个信号量给数据处理任务,因等待信号量而处于挂起状态的数据处理任务获得信号量后,立即从用户自定义的接收缓冲队列取出数据包进行处理。键盘扫描任务检测到按键被按下时,进行去抖动处理并获取键值。然后,以键值作为消息内容,发送消息给按键处理任务。因等待消息而挂起的按键处理任务取得消息后,根据消息内容(键值)和当前系统状态,生成一串命令数据并通过串口向远端发送。

结 语
本文举例说明了环境下包含多任务的通信,重点叙述了多任务的执行过程和任务间的同步与通信。该应用系统经过较长时问的测试,没有发生数据到达串口时因没能及时处理而被后来到达的数据覆盖而造成丢失的情况,也没有发生按下按键时不能及时处理的情况,应用系统的可靠性和实时性要求均可满足。
Small RTOS51是一个占用系统资源极小的嵌入式实时操作系统,可以应用在绝大多数单片机上,而且移植过程简单。使用它开发单片机的多任务应用系统,可以较大地缩短开发周期。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭