RTX时间管理函数os_dly_wait()延迟时间不对

2019-07-14 16:28发布

  需要移植一个裸奔AD程序到RTX上,结果发现延迟总是出问题,,于是仅创建了一个任务进行测试~  
  发现延迟完全超出预计了~~
  我是在STM32f103上实现的,看了RTX的手册仍然没找到问题出在哪~  恳请大神给小弟指点指点!!

  RTX配置文件设置:
      timer clock value[Hz]: 72000000
      Timer tick value [us]:   1000

   这样每个时钟节拍应该是1ms,那么os_dly_wait(16)不是应该延迟16ms吗?,,,
   最初发现时间不对,以为是调试窗口显示有问题,使用LED灯进行测试,设置延迟500ms,
   结果等了半天才闪一次~~然后就知道真的出问题了~~

   可是测试结果是这样的~  


延迟前后时间对比:
  


任务运行视图:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
60user113
1楼-- · 2019-07-14 23:38
7762642422d 发表于 2018-10-30 16:33
时间多了10倍,你看下时钟具体多少?另外有几个线程?

是的,多了10倍,,时钟我在上面给了啊?不是这个时钟设置吗? 72MHz, 滴答设置为1ms, 就开了一个任务进行测试,,
7762642422d
2楼-- · 2019-07-15 00:21
60user113 发表于 2018-10-30 16:49
是的,多了10倍,,时钟我在上面给了啊?不是这个时钟设置吗? 72MHz, 滴答设置为1ms, 就开了一个任务进行测试,,

还是没配置正确,你看下这里:
http://blog.csdn.net/ropai/article/details/19970839
另外建议使用CMSIS-RTOS里面的API。
60user113
3楼-- · 2019-07-15 05:04
7762642422d 发表于 2018-10-30 17:09
还是没配置正确,你看下这里:
http://blog.csdn.net/ropai/article/details/19970839
另外建议使用CMSIS-RTOS里面的API。

好的,谢谢! 不过出问题后我就找了类似的资料修改了~  并没有用,,, 刚刚重新编译了一遍(rebulid),延迟突然就正确了,,还是没明白是哪的问题~   
还有,再请教你一个问题:我在RTX的新开了一个任务,调用了HAL_TIM_Base_Start_IT(&htim1);启用stm32的定时器TIM1,结果程序就不稳定了,,,是不是不能直接在任务中使用HAL_TIM_Base_Start_IT(&htim1)?
7762642422d
4楼-- · 2019-07-15 07:35
60user113 发表于 2018-10-30 17:18
好的,谢谢! 不过出问题后我就找了类似的资料修改了~  并没有用,,, 刚刚重新编译了一遍(rebulid),延迟突然就正确了,,还是没明白是哪的问题~   
还有,再请教你一个问题:我在RTX的新开了一个任务,调用了HAL_TIM_Base_Start_IT(&htim1);启用stm32的定时器TIM1,结果程序就不稳定了,,,是不是不能直接在任务 ...

少许误差还是正常的,但具体到HAL_TIM_Base_Start_IT我就不清楚了。
60user113
5楼-- · 2019-07-15 08:58
 精彩回答 2  元偷偷看……
TOPCB
6楼-- · 2019-07-15 11:11
楼主,如果在不开TIM1的情况下,延时正确,说明tim1的中断处理延时太长,看一下这个中断中处理是否增加了延时,导致滴答时钟中断被打断时间太长导致。

一周热门 更多>