定时器几乎每个 MCU 都有的外设,有的 MCU 其定时器功能异常强大,比如提 供 PWM、输入捕获等功能。但最常用的还是定时器基础定时功能,通过定时器来 完成需要周期性处理的事务。MCU 自带的定时器属于硬件定时器,不同的 MCU 其 硬件定时器数量不同,因为要考虑成本问题。FreeRTOS 也提供了定时器功能, 不过是软件定时器,软件定时器的精度肯定是没有硬件定时器那么高,但对于普 通的精度要求不高的周期性处理的任务来说够了。当 MCU 的硬件定时器不够的时 候就可以考虑使用 FreeRTOS 的软件定时器。本章要实现的功能是:主要创建两 个任务,一个软件定时器是单次模式,5000 个 tick 调用一次回调函数,另一 个软件定时器是周期模式,1000 个 tick 调用一次回调函数,在回调函数中输 出相关信息。本章分为如下几部分内容: 10.1 软件定时器简介 10.2 常用软件定时器 API 函数 10.3 硬件设计 10.4 软件设计 10.5 实验现象
10.1 软件定时器简介
定时器,是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事 件,用户可以自定义定时器的周期与频率。类似生活中的闹钟,我们可以设置闹 钟每天什么时候响,还能设置响的次数,是响一次还是每天都响。 定时器有硬件定时器和软件定时器之分: 硬件定时器是芯片本身提供的定时功能。一般是由外部晶振提供给芯片输入 时钟,芯片向软件模块提供一组配置寄存器,接受控制输入,到达设定时间值后 芯片中断控制器产生时钟中断。硬件定时器的精度一般很高,可以达到纳秒级别, 并且是中断触发方式。 软件定时器,软件定时器是由操作系统提供的一类系统接口,它构建在硬件 定时器基础之上,使系统能够提供不受硬件定时器资源限制的定时器服务,它实 现的功能与硬件定时器也是类似的。 使用硬件定时器时,每次在定时时间到达之后就会自动触发一个中断,用户 在中断中处理信息;而使用软件定时器时,需要我们在创建软件定时器时指