例9-1 UCOSIII软件定时器实验
实验内容:
本实验设计了2个任务,任务A用于创建两个定时器:定时器1和定时器2,任务A还创建了另外一个任务B。其中定时器1 为周期定时器,初始延时为200ms,以后的定时器周期为1000ms,定时器2位单次定时器,延时为2000ms。
任务B作为按键检测任务,当KEY_UP键按下的时候,打开定时器1;当KEY0按下的时候打开定时器2;当KEY1按下的时候,同时关闭定时器1和2;任务B还用来控制LED0,使其闪烁,提示系统正在运行。
定时器1定时完成以后调用回调函数刷新其工作区域的背景,并且在LCD上显示定时器1运行的次数。定时器2定时完成后也调用其回调函数来刷新其工作区域的背景,并且显示运行次数,由于定时器2是单次定时器,我们通过串口打印来观察单次定时器的运行情况。
注意:
1、 UCOSIII中以下优先级用户程序不能使用,ALIENTEK将这些优先级分配给了UCOSIII的5个系统内部任务。
优先级0:中断服务服务管理任务 OS_IntQTask()
优先级1:时钟节拍任务 OS_TickTask()
优先级2:定时任务 OS_TmrTask()
优先级OS_CFG_PRIO_MAX-2:统计任务 OS_StatTask()
优先级OS_CFG_PRIO_MAX-1:空闲任务 OS_IdleTask()
2、 由于定时器2为单次定时器,并且定时器2的dly为2000ms,因此当我们按下KEY0的时候,定时器2的回调函数并不会立即执行,而是要等到定时结束,也就是要等待2000ms才会看到回调函数的执行效果!!!!
正点原子@ALIENTEK
2014-11-26
广州市星翼电子科技有限公司
联系电话(传真):020-38271790
购买:http://shop62103354.taobao.com
http://shop62057469.taobao.com
技术支持论坛:www.openedv.com