一文读懂FreeRTOS软件定时器

一文读懂FreeRTOS软件定时器

软件定时器

定时器概述

软件定时器(定时器)用于在将来一个固定的时间点执行一个功能函数,该功能函数即是定时器的回调函数,定时器开始到回调函数执行的时间即是定时器的周期。

回调函数要点

定时器回到函数运行在定时服务任务的上下文中,因此回调函数绝不可以被阻塞。例如,定时器的回调函数不能调用vTaskDelay(),vTaskDelayUntil(),或者特别是访问非零阻塞时间的队列和信号量;

定时器服务任务

计时器功能是可选的,而不是FreeRTOS内核的一部分。 相反,它由计时器服务(或守护程序)任务提供。FreeRTOS提供了一组相关的API函数,许多这种函数使用了标准的FreeRTOS队列向定时器服务任务发送命令。如下图所示:
一文读懂FreeRTOS软件定时器

定时任务配置

  1. configUSE_TIMERS: 是否启动定时器;
  2. configTIMER_TASK_PRIORITY:定时服务任务的优先级;
  3. configTIMER_QUEUE_LENGTH:队列长度,定时器任务同一时间能容纳的定时器命令个数;
  4. configTIMER_TASK_STACK_DEPTH:定时器任务的栈空间深度,单位字(4Bytes);

单次和周期定时器

定时器1和2同时从0时刻运行,定时器1位单次类型定时器,定时器2位周期定时器,区别如下:
一文读懂FreeRTOS软件定时器

复位定时器

定时器1开启之后,周期为5,应在6时刻执行回调,在时刻5进行复位后,在10时刻执行回调,如下图所示。
一文读懂FreeRTOS软件定时器