软件定时器(Software Timer)
使用流程
- 创建定时器句柄
- 启动定时器
注意事项
- 启动定时器后,延时一个周期再执行定时器回调,不会立刻执行。因此,当定时器句柄中的 pdTure 改成 pdFalse,这就是个延时任务。
- 延时任务执行一次之后,如果再次执行xTimerStart,会再次执行一次延时任务。
代码示例
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/timers.h"
void TimerCallback(TimerHandle_t xTimer)
{
printf("周期定时器回调\r\n");
}
void app_main()
{
TimerHandle_t xTimer = xTimerCreate(
"MyTimer", // 定时器名称
pdMS_TO_TICKS(1000), // 定时器周期(以毫秒为单位)
pdTRUE, // 是否周期性触发
NULL, // 定时器ID(可选)
TimerCallback // 定时器回调函数
);
xTimerStart(xTimer, portMAX_DELAY);
vTaskDelay(pdMS_TO_TICKS(1000));
xTimerStop(xTimer, portMAX_DELAY); // 停止定时器
xTimerDelete(xTimer, portMAX_DELAY); // 删除定时器
}
License:
CC BY 4.0