在《FreeRTOS 之任务调度》一文中提到,硬件定时器是和硬件设计相关的,不同的芯片有不同的配置方法,通过中断方式触发执行,精确度高。相对于硬件定时器,FreeRTOS 中还提供了软件定时器。本文就来聊聊软件定时器是如何实现的,以及它的精度如何呢??
首先看一个例子,如下的代码就是使用软件定时器,周期性的打印 “This is a softtimer” 信息。
xTimerCreate() 函数用于创建一个定时器。其中, “时长” 是以 tick 为单位的,uxAutoReload 参数表示当定时器到期时,是否自动装载,等待下一次触发。
从函数的定义中可以看出,其参数就是一个定时器所包括的资源: