软件定时器与硬件无关,它由FreeRTOS内核控制调度控制,与硬件的时钟/计数无关。软件定时器功能是一个可选的内容,为使用这一功能,需要如下支持:
- 在工程中添加FreeRTOS/Source/timers.c文件
- 在FreeRTOSConfig.h中设置configUSE_TIMERS为1
- 在工程路径中包含timers.h头文件,并在使用API的文件中引用这一头文件
一个定时器回调函数的类似于一个任务,它采用软件定时器做为它的唯一参数,软件定时器回调函数声明周期为:开始-结束-退出,切忌在其中加入阻塞(队列可以在定时器中使用,但是阻塞时间必须为0)。
void aTestTimerCallback(Timerhandle_t xTimer)
软件定时器有两个类型:单次定时器、自动重载定时器。
- 单次定时器
- 单次定时器生命周期只有一次,但可以手动载入
- 自动重载定时器
- 自动重载定时器会反复执行
当软件定时器被创建时,这个定时器处于睡眠状态,可以使用创建这个定时器时生成的句柄来访问到这个定时器。只有在启动这个被创建的定时器后,这个定时器才会在到达设定的时间点执行回调函数。