FreeRTOS 定時器基本使用
軟件定時器本質上是一個周期性的task
配置
使用軟件定時器需要在FreeRTOSConfig.h
先配置, 需要注意的是優先級和堆棧
#define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY (1)
#define configTIMER_QUEUE_LENGTH 10
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 )
創建定時器
- 函數原型
xTimerHandle xTimerCreate( const signed char *pcTimerName,
portTickType xTimerPeriodInTicks,
unsigned portBASE_TYPE uxAutoReload,
void * pvTimerID,
tmrTIMER_CALLBACK pxCallbackFunction );
- pcTimerName : 任務名
- xTimerPeriodInTicks : 定時周期
- uxAutoReload : pdTRUE, 自動重載; pdFALSE, 一次性
- pvTimerID :
- pxCallbackFunction : 回調函數
- 使用
xTimerMain = xTimerCreate("TimerMain", (1000*30 / portTICK_RATE_MS), pdTRUE, (void *)0, MainCallback);`
啟動定時器
- 宏
#define xTimerStart( xTimer, xBlockTime ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START, ( xTaskGetTickCount() ), NULL, ( xBlockTime ) )
- 使用
xTimerStart( xTimerMain, 0 );