- UID
- 1029342
- 性别
- 男
|
定时器的实现
每个任务有一个timer链表保存该任务使用的所有定时器。定时器链表具有以下的数据结构
structv5_timer
{
bytE timerid;/*标示每个TIMER*/
unsigned long period;/*标示定时器的timeout时长*/
bytE timer typE;/*标示定时器的类型*/
unsignedlong starttimE;/*标示定时器启动的系统时间*/
bytE t_flag ;/*保留用的标记*/
}
要设定一个定时器只需新添加一个TIMER到链表中。调用系统APIOSTimeGet()获取目前系统时间作为定期器的启动时间填入定时器结构体的starttimE成员中,给period赋值指定定时器时长。任务循环的开始部分在接收邮件消息前,将检查链表,通过比较每个TIMER的starttime和目前系统时间的差值来判断定时器是否到期,如果有定时器到期则插入一条TIMEOUT消息到本任务的邮箱。
结束语
V5接口在通信网络中有着广泛的应用,笔者探讨了在开放源码的μC/OS操作系统上如何实现V5接口,提出了V5接口的软件实现框架和具体设计方案。在商业应用上可大大降低开发成本,对开发嵌入式操作系统的技术人员能有所帮助。 |
|