ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

STM32CubeMX学习笔记九《定时器配置》

2020-11-22 18:32:15  阅读:541  来源: 互联网

标签:分频 分频器 定时器 16 笔记 计数器 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有