STM32F407ZG开发板学习(6)
通用定时器简介
STM32F4的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5、 TIM9~TIM14 等通用定时器,还有 TIME6 和 TIME7 等基本定时器 ,总共达 14 个定时器之多 。
通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。
它们可用于多种用途,包括测量输入信号的脉冲宽度(输入捕获)或生成输出波形(输出比较和 PWM)。
使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。
这些定时器彼此完全独立,不共享任何资源。
注:
32 位外设寄存器必须按字(32 位)写入数据。所有其它外设寄存器则必须按半字(16 位) 或字(32 位)写入数据。而读访问可支持字节(8 位)、半字(16 位)或字(32 位)。
TIM2~TIM5
具体功能使用时查看官方手册。

TIM9~TIM14


原理
这里只贴出了一些常用的和此次实验需要用到的位。
TIMx控制寄存器1(TIMx_CR1)
计数器使能。
DMA/中断使能寄存器(TIMx_DIER)
更新中断使能。
预分频寄存器(TIMx_PSC)
存放预分频值,16位。
计数器(TIMx_CNT)
存放计数器值。
自动重载寄存器(TIMx_ARR)
自动重装载值。当计数器值达到设定情况时,将会重装载的值。
该寄存器在物理上实际对应着2个寄存器。一个是程序员可以直接操作的,另外一个是程序员看不到的,这个看不到的寄存器在《中文参考手册》里面被叫做影子寄存器。事实上真正起作用的是影子寄存器。根据TIMx_CR1TIMx_CR1寄存器中APRE位的设置:APRE=0时,预装载寄存器的内容可以随时传送到影子寄存器,此时2者是连通的;而APRE=1时,在每一次更新事件(UEV)时,才把预装载寄存器(ARR)的内容传送到影子寄存器。
状态寄存器(TIMx_SR)
硬件置1,软件清0!(实际上很多中断的处理都是硬件产生中断置1,在中断函数中由软件来清0)

实验
配置TIM3,主循环中使LED0闪烁,定时器中断函数中更改LED1的引脚值,则定时器每计数到指定值产生中断,LED1就会闪烁,而LED0的闪烁用于判断主循环工作状况。
配置步骤
- 时钟使能。
- TIM初始化,用结构体TIM_TimeBaseInitTypeDef。
- 设置DIER使能中断void TIM_ITConfig(TIMx, TIM_IT, ENABLE/DISABLE

本文详细介绍STM32F4的通用定时器TIM2~TIM5和TIM9~TIM14的工作原理,涉及TIMx寄存器配置、DMA/中断、预分频计数和状态管理。通过TIM3实例演示如何配置LED闪烁和中断处理。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



