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