FreeRTOS - 定時器使用注意

一、只有進入定時器守護任務,從定時器命令隊列取出命令,隊列空間纔會空出一個可用空間;全部定時器公用一個定時器隊列函數

 

二、若是使用軟件定時器,在調度器開始前,會自動建立一個定時器守護任務,configTIMER_TASK_STACK_DEPTH和configTIMER_TASK_STACK_DEPTH用於設置這個守護任務的棧大小和任務優先級,各個定時器的回調函數是定時器守護任務調用的函數;哪一個定時器定時時間到就執行哪一個定時器回調函數,若是某個回調函數調用可能致使阻塞的函數,就會影響其餘回調函數的調用週期,因此不建議在回調函數調用可能致使阻塞的函數,而且回調函數執行週期儘量的短spa

 

三、定時器守護任務進入準備態的條件:定時器命令隊列非空,或者定時器定時時間到隊列

 

四、由於發送給定時器命令隊列的命令包含時間戳(time stamp,用來記錄調用命令和命令被定時器守護任務處理的時間段),因此一調用xTimerStart(...)函數,定時器就開始計時,而不是等到進入定時器守護任務執行「開始命令」才計時,其餘命令效果同樣,好比重啓定時器、改變定時器週期。回調函數

 

五、void vApplicationTickHook( void )也能夠做爲定時器回調函數使用,週期是一個tick period。io

相關文章
相關標籤/搜索