FreeRTOS 定时器组(基础知识必掌握)

FreeRTOS 定时器组(基础知识必掌握)

单次模式和周期模式
    FreeRTOS 提供的软件定时器支持单次模式和周期性模式,单次模式就是用户创建了定时器并启动了定时器后,定时时间到将不再重新执行,这就是单次模式软件定时器的含义。周期模式就是此定时器会按照设置的时间周期重复去执行,这就是周期模式软件定时器的含义。另外就是单次模式或者周期模式的定时时间到后会调用定时器的回调函数,用户可以回调函数中加入需要执行的工程代码。

定时器任务(Daemon(守护进程) 任务)
    为了更好的管理 FreeRTOS 的定时器组件, 专门创建了一个定时器任务, 或者称之为 Daemon 任务。FreeRTOS 定时器组的大部分 API 函数都是通过消息队列给定时器任务发消息,在定时器任务里面执行实际的操作。为了更好的说明这个问题,我们将官方在线版手册中的这个截图贴出来进行说明:

FreeRTOS 定时器组(基础知识必掌握)

函数描述:
函数 xTimerCreate 用于创建软件定时器。
? 第 1 个参数是定时器名字,用于调试目的,方便识别不同的定时器。
? 第 2 个参数是定时器周期,单位系统时钟节拍。
? 第 3 个参数是选择周期模式还是单次模式,若参数为 pdTRUE,则表示选择周期模式,若参数为
pdFALSE,则表示选择单次模式。
? 第 4 个参数是定时器 ID,当创建不同的定时器,但使用相同的回调函数时,在回调函数中通过不同的
ID 号来区分不同的定时器。
? 第 5 个参数是定时器回调函数。
? 返回值,创建成功返回定时器的句柄,由于 FreeRTOSCongfig.h 文件中 heap 空间不足,或者定时器周期设置为 0,会返回 NULL。

使用这个函数要注意以下问题:
1. 在 FreeRTOSConfig.h 文件中使能宏定义:
#define configUSE_TIMERS 1

函数 xTimerStart

FreeRTOS 定时器组(基础知识必掌握)

FreeRTOS 定时器组(基础知识必掌握)

实验验证:

使用软件定时器,100ms一次实现led反转,1000ms一次Beep翻转。

主要展示定时器任务和回调函数:

定时器任务:

回调函数:

    通过ID不同,判断是哪个定时器时间到,然后做相应的动作。

FreeRTOS 定时器组(基础知识必掌握)

来源:李肖遥

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年2月14日
下一篇 2020年2月14日

相关推荐