天嵌 ARM开发社区

 找回密码
 注册
查看: 4616|回复: 2

uCOS-III定时器的应用

[复制链接]
shendan 发表于 2013-10-2 16:36:03 | 显示全部楼层 |阅读模式
本帖最后由 shendan 于 2013-10-3 14:58 编辑

    uCOS-III可以为应用程序提供定时器的功能,对应的源文件就是os_tmr.c。
    定时器本质上是设置一个计数值,当计数值减为0的时候,就调用回调函数。在这里需要注意的是回调函数里面一定不能是有那个阻塞调用函数。
    定时器通过设置可以有三种模式:单次延时触发,周期延迟触发,周期无延迟触发。
    单次延时触发:定时器设置此模式后,启动定时器,会延时一段时间后触发,跳转到回调函数里面去执行。
    周期延迟触发:定时器设置为这个模式后,启动定时器,会延时设置的一段时间后跳转到回调函数里面执行,执行完等待周期延迟值,周期性仅需回调函数。
    周期无延迟触发:定时器设置为这个模式后,启动定时器,延迟周期值,后跳转到回调函数中执行。

    uCOS-III中存在一个定时器任务,所有定时器启动时都会把回调函数放入到这个定时器任务的列表中,时间一到,就执行。因此定时器任务的优先级不宜过低。在定时器任务执行回调函数的时候,调度器是关掉的,因此即使在执行回调函数的过程中发生了中断,中断返回的时候还是会回到回调函数中。
    例子如下:
  1. OS_TMR t;
  2. void Task(void *p_arg)
  3. {
  4. OS_ERR err;
  5. (void)&p_arg;
  6. while(DEF_ON)
  7. {
  8. OSTmrCreate(&t,
  9. "the timer"
  10. 10,
  11. 100,
  12. OS_OPT_TMR_PERIODIC,
  13. t_callback,
  14. 0,
  15. &err);
  16. OSTmrStart(&t, &err);

  17. }
  18. }

  19. void t_callback(void *p_arg)
  20. {


  21. }
复制代码


 楼主| shendan 发表于 2013-10-3 14:59:52 | 显示全部楼层
已经更新..
 楼主| shendan 发表于 2013-10-8 12:03:13 | 显示全部楼层
配置:
1、要使用uCOS-III的定时器功能,要先启用定时器服务,在os_cfg.h把OS_CFG_TMR_EN置为1.
2、uCOS-III中的定时器的时间分辨率是由OS_CFG_TMR_TASK_RATE_HZ常数来配置的,因此必须进行设置。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-3 10:14 , Processed in 1.062500 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表