嵌入式学习小组
直播中

刘颖

7年用户 179经验值
私信 关注

如何周期性的执行uCOS下高速定时器的任务?

问题描述:STM32F103平台,uCOS-III系统。现在有一个任务需要周期性执行,每0.4ms执行一次,周期时间小于uCOS系统tick时间,所以不能采用uCOS系统的定时器来做。那该如何周期性的执行此任务呢??

回帖(1)

彭丞峥

2019-11-7 06:54:07
用STM自己的定时器,具体做法是:
1.需要周期执行的任务代码封装成一个函数func(),
2.定义一个信号量semForTimer,
3.设置定时器周期为你需要的时间,即0.4ms,启动定时器,
4.在定时器中断服务函数中,利用post函数发送信号量,
5.在task中,利用pend()函数等待信号量semForTimer,然后执行func(),
有个需要注意的问题是,stm32定时器一旦启动后,会立即进入一次中断,发送一次信号量,定时器任务就会被执行,
没有起到定时作用,解决方法是,任务中先pend()一次信号量,然后在进入for(;;),在for循环中pend(),再执行func(),这也是没有办法的办法。
如果你想到了更好的办法,请联系我。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分