13.STM32freeRTOS---软件定时器

本文详细介绍了FreeRTOS中的软件定时器,强调了回调函数不能使用阻塞API的重要注意事项。内容涵盖定时器服务任务、单次与周期定时器的创建、开启和停止,以及回调函数的实现。实验部分展示了如何在MCU上使用软件定时器,包括创建两个分别用于周期性和单次任务的定时器。实验总结指出,定时时间到达后,回调函数会被调用执行相应功能。
摘要由CSDN通过智能技术生成


前言

定时器可以说是每个MCU都有的外设,除了有最基础的定时的功能,还有些很强大的功能–PWM,输出捕获等功能。MCU自带的定时器属于硬件定时器,不同MCU的硬件定时器数量不同。freeRTOS提供了软件定时器,软件定时器精度没有硬件定时器的精度高。但是对于普通的精度要求的周期性处理的任务来说足够了。
当MCU的硬件定时器不够的时候就可以考虑freeRTOS 的软件定时器。


一、软件定时器介绍

软件定时器可以定时一段时间,当定时的时间到达之后就执行指定的功能函数,被定时器调用的这个功能叫做回调函数。回调函数的两次执行间隔就是定时器的定时周期,简单地说,当定时器的定时时间到了以后就会执行回调函数。

关于回调函数的注意事项:
软件定时器的回调函数在定时器服务中执行,所以一定不能在回调函数中调用任何会阻塞任务的API!!!比如,定时器回调函数中绝对不要用 vTaskDelay(),vTaskDelayUntil(),以及一些访问队列或者信号量的非零阻塞时间的API!!

二、定时器服务/Daemon 任务

1. 定时器服务任务 与 队列

在这里插入图片描述
在这里插入图片描述

2. 定时器相关配置

定时器服务任务 与 定时器命令队列
在这里插入图片描述

3. 单次定时器 与 周期定时器

在这里插入图片描述

4. 复位软件定时器

有时候定时器正在运行的时候需要复位软件定时器,复位软件定时器会重新计算走起到达的时间点,这个新的时间点是相对于杜威定时器的那个时刻计算的,并不是第一次启动软件定时器的那个时间点。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

5. 创建软件定时器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 开启软件定时器

在这里插入图片描述
在这里插入图片描述
中断版本的传参和之前的一样!!!

7. 停止软件定时器

在这里插入图片描述
参数与之前的参数一致!!

8. 实验

#include "sys.h"
#include "usart.h"
#include "led.h"
#include 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值