一、基础概念
概念解析:定时器分为硬与软定,硬件定时器到达定时时间自动触发中断服务函数,使用软件定时器时,需要我们在创建软件定时器时指定时间到达后要调用的函数(也称超时函数/回调函数,为了统一,下文均用回调函数描述),在回调函数中处理信息。
软件定时器特点: ? 裁剪:能通过宏关闭软件定时器功能。 ? 软件定时器创建。 ? 软件定时器启动。 ? 软件定时器停止。 ? 软件定时器复位。 ? 软件定时器删除。 ? FreeRTOS 提供的软件定时器支持单次模式和周期模式
二、运行机制
软件定时器是可选的系统资源,在创建定时器的时候会分配一块内存空间。FreeRTOS的软件定时器采用消息队列进行通信,利用“定时器命令队列”向软件定时器任务发送一些命令,任务在接收到命令就会去处理命令对应的程序,比如启动定时器,停止定时器等。
使用软件定时器需要注意几点
- 软件定时器的回调函数中应快进快出,绝对不允许使用任何可能引软件定时器起任务挂起或者阻塞的 API 接口,在回调函数中也绝对不允许出现死循环
- 软件定时器使用了系统的一个队列和一个任务资源,软件定时器任务的优先级默认为configTIMER_TASK_PRIORITY,为了更好响应,该优先级应设置为所有任务中最高的优先级
- 创建单次软件定时器,该定时器超时执行完回调函数后,系统会自动删除该软件定时器,并回收资源
- 定时器任务的堆栈大小默认为 configTIMER_TASK_STACK_DEPTH 个字节。 软件定时器函数接口
三、 API函数
官方API https://freertos.org/FreeRTOS-Software-Timer-API-Functions.html
四、实验代码分析
正点的 1、创建句柄与定时回调函数 2、在开始任务函数里面创建任务函数 函数具体功能查官网 3、在任务需要的地方开启定时器 4、编写定时时间到达的时候的回调函数 有单片机基础的应该看一下大概就明白这个机制了在于实际工程中的应用
|