STM32CubeMX学习笔记九《定时器配置》
作者:互联网
前言
STM32在定时器方面应用需求很多,掌握好后在编写系统心跳、数据处理等方面都起到想当重要的成分
定时器简介
所用的STM32F767有 TIM1 和 TIM8 等高级定时器,有 LPTIM1 低功耗定时器, 也有 TIM2-TIM5,TIM9~TIM14 等通用定时器,还有 TIM6 和 TIM7 等基本定时器,总共达 15 个定时器之多。
定时器的类型(总共15个定时器):
通用定时器:TIM2—TIM5 、TIM9—TIM14 总共10个定时器。
高级定时器:TIM1 、 TIM8 总共2个定时器
基本定时器:TIM6 、 TIM7 总共2个定时器
低功耗定时器:LPTIM1
STM32F4和STM32F7的定时器时钟源:
(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线
(2)通用定时器timer2-timer5,通用定时器timer12-timer14以及基本定时器timer6,timer7的时钟来源是APB1总线
(3)当APB1和APB2分频数为1的时候,TIM1、TIM8-TIM11的时钟为APB2的时钟,TIM2-TIM7、TIM12-TIM14的时钟为APB1的时钟;
(4)而如果APB1和APB2分频数不为1,那么TIM1、TIM8-TIM11的时钟为APB2的时钟的两倍,TIM2-TIM7、TIM12-TIM14的时钟为APB1的时钟的两倍。
定时器的功能:
通用定时器:
通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获)或生成输出波形( 输出比较和 PWM)。使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。这些定时器彼此完全独立,不共享任何资源。
-
16 位( TIM3 和 TIM4)或 32 位( TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。
-
16 位可编程预分频器,用于对计数器时钟频率进行分频 (即运行时修改),分频系数介 于 1 到 65536 之间。
-
通道功能
— 输入捕获
— 输出比较
— PWM生成
— 单脉冲模式输出 -
使用外部信号控制定时器且可实现多个定时器互连的同步电路。
-
发生如下事件时生成中断/DMA 请求:
— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
— 输入捕获
— 输出比较 -
支持定位用增量(正交)编码器和霍尔传感器电路
-
外部时钟触发输入或逐周期电流管理
高级定时器:
- 16 位递增、递减、递增/递减自动重载计数器。
- 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数 介于 1 到 65536 之间。
- 多达 4 个独立通道,可用于:
— 输入捕获
— 输出比较
— PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出 - 带可编程死区的互补输出
- 使用外部信号控制定时器且可实现多个定时器互连的同步电路。
- 重复计数器,用于仅在给定数目的计数器周期后更新定时器寄存器。
- 用于将定时器的输出信号置于复位状态或已知状态的断路输入。
- 发生如下事件时生成中断/DMA 请求:
— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
— 输入捕获
— 输出比较
— 断路输入 - 支持定位用增量(正交)编码器和霍尔传感器电路。
- 外部时钟触发输入或逐周期电流管理。
基本定时器:
- 16 位自动重载递增计数器
- 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数 介于 1 和 65536 之间
- 用于触发 DAC 的同步电路
- 发生如下更新事件时会生成中断/DMA 请求:计数器上溢
定时器的计算公式:
Tout = ((arr+1)*(psc+1))/Tclk;
公式中psc(prescaler)就是分频系数,arr就是计数值(period),达到这个计数就会发生溢出中断,Tclk就是我上述分析的时钟源频率
以上便是窗口看门狗的简介,接下来我们将通过STM32CubeMx软件来配置定时器,实现使用 TIM3 的定时器中断来控制 DS1 的翻转,在主函数用 DS0 的翻转来提示程序正在运行。
第一步 创建工程
1. 打开STM32CubeMX软件,创建新工程
2. 选择自己所用的芯片
3. 配置RCC以备使用外部时钟源。
4. 配置时钟树
5. 我们这里初始化LED的GPIO用作提示验证软件是否正常运行。
6. 配置定时器初始化
7. 配置定时器中断功能来定时反转DS1
8. 设置工程名称、所用的软件编辑器和软件中堆栈的大小。
9. 配置所调用的HAL后,点击③处生成软件工程。
10. 打开软件工程tim.c文件查看并添加相关初始化配置。
11. 编写中断回调函数
第二步 下载验证
将我们的工程编译完成后下载来验证是否完成我们本节的需求。(已完成功能的基本测试)
定时器工程
百度网盘链接: https://pan.baidu.com/s/1j2B3yzBuNcUWci0egVbVJA
提取码:wks3
总结
讲述定时器的篇章非常多,在日常的使用的占用的比例也是很多,搞清楚定时器的种类,特别是定时器的频率要搞明白,否则在使用中会出现和自己设置的逻辑相驳。come on !
作者:Cary.chen
标签:分频,分频器,定时器,16,笔记,计数器,STM32CubeMX,时钟 来源: https://blog.csdn.net/weixin_43123205/article/details/109958592