FreeRTOS - 定时器使用注意

时间:2021-09-17 00:24:00

1、只有进入定时器守护任务,从定时器命令队列取出命令,队列空间才会空出一个可用空间;所有定时器公用一个定时器队列

 

2、如果使用软件定时器,在调度器开始前,会自动创建一个定时器守护任务,configTIMER_TASK_STACK_DEPTH和configTIMER_TASK_STACK_DEPTH用于设置这个守护任务的栈大小和任务优先级,各个定时器的回调函数是定时器守护任务调用的函数;哪个定时器定时时间到就执行哪个定时器回调函数,如果某个回调函数调用可能导致阻塞的函数,就会影响其他回调函数的调用周期,所以不建议在回调函数调用可能导致阻塞的函数,并且回调函数执行周期尽可能的短

 

3、定时器守护任务进入准备态的条件:定时器命令队列非空,或者定时器定时时间到

 

4、因为发送给定时器命令队列的命令包含时间戳(time stamp,用来记录调用命令和命令被定时器守护任务处理的时间段),所以一调用xTimerStart(...)函数,定时器就开始计时,而不是等到进入定时器守护任务执行“开始命令”才计时,其他命令效果一样,比如重启定时器、改变定时器周期。

 

5、void vApplicationTickHook( void )也可以作为定时器回调函数使用,周期是一个tick period。