本质
软件定时器本质上是一个周期性的任务或单次执行任务。
第一步:宏配置
使用软件定时器需要在FreeRTOSConfig.h先配置, 需要注意的是优先级和堆栈,这几个数据要根据具体情况具体设置。
#define configUSE_TIMERS 1// 使能软件定时器
#define configTIMER_TASK_PRIORITY 1// 确定软件定时器进程优先级(根据具体应用而定,不要设的过低,否则精度也会随之下降)
#define configQueue_LENGTH 10// 定时器命令队列(Timer Command Queue)长度
#define configTIMER_TASK_STACK_DEPTH 512// 分配给软件定时器任务的内存大小
第三步:使用API函数
这些API函数就可在应用层调用了,具体的函数参数和使用参加官网的文档说明,里面有很好的介绍,这里就没必要说明了
xTimerCreate();
xTimerlsTimerActive();
xTimerStart();
xTimerStop();
xTimerChangePeriod();
xTimerDelete();
xTimerReset();
xTimerStartFromISR();
xTimerStopFromISR();
xTimerChangePeriodFromISR();
xTimerResetFromISR();
xTimerGetTimerID();
xTimerGetTimerDaemonTaskHandle();
参考例程
在FreeRTOS的源代码的Demo中有提供具体例子,把相关文件加入工程就可使用的。文件名与位置如下:
文件名:TimerDemo.c与TimerDemo.h
文件位置:FreeRTOS\Demo\Common\Minimal与FreeRTOS\Demo\Common\include