STM32_TIMER(全)

这篇具有很好参考价值的文章主要介绍了STM32_TIMER(全)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32_TIMER

一.定时器概述

1.1定时器原理

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

1.2定时器分类

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

1.3定时器特性表

F1:

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

H7:

定时器类型

主要功能

基本定时器

没有输入输出通道,常用作时基,即定时功能

通用定时器

具有多路独立通道,可用于输入捕获/输出比较,也可用作时基

高级定时器

除具备通用定时器所有功能外,还具备带死区控制的互补信号输出、刹车输入等功能(可用于电机控制、数字电源设计等)

二.定时器介绍

2.1基本定时器

2.1.1介绍

TIM6/TIM7

主要特性:

  1. 16位递增计数器(计数值:0~65535)

  1. 16位预分频器(分频系数:1~65536)

  1. 可用于触发DAC

  1. 在更新事件(计数器溢出)时,会产生中断/DMA请求

2.1.2定时器框图
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

①时钟源

②控制器

③计数器(时基单元)

影子寄存器是实际起作用的寄存器,不可直接访问

2.1.3 定时器溢出条件

计数器模式

溢出条件

递增计数模式

CNT==ARR

递减计数模式

CNT==0

中心对齐模式

CNT==ARR-1、CNT==1

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
2.1.4 计数模式说明

递增:

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

递减:

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

中心对其:

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
2.1.5计算公式
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
2.1.6配置步骤

步骤

操作

函数

1

配置定时器基础工作参数

HAL_TIM_Base_Init()

2

定时器基础MSP初始化

HAL_TIM_Base_MspInit() 配置NVIC、CLOCK等

3

使能更新中断并启动计数器

HAL_TIM_Base_Start_IT()

4

设置优先级,使能中断

HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

5

编写中断服务函数

TIMx_IRQHandler()等  HAL_TIM_IRQHandler()

6

编写定时器更新中断回调函数

HAL_TIM_PeriodElapsedCallback()

函数

主要寄存器

主要功能

HAL_TIM_Base_Init()

CR1、ARR、PSC

初始化定时器基础参数

HAL_TIM_Base_MspInit()

存放NVIC、CLOCK、GPIO初始化代码

HAL_TIM_Base_Start_IT()

DIER、CR1

使能更新中断并启动计数器

HAL_TIM_IRQHandler()

SR

定时器中断处理公用函数,处理各种中断

HAL_TIM_PeriodElapsedCallback()

定时器更新中断回调函数,由用户重定义

2.2通用定时器

2.2.1介绍

通用定时器:TIM2/TIM3 /TIM4 /TIM5

主要特性:

  1. 16位递增、递减、中心对齐计数器(计数值:0~65535)

  1. 16位预分频器(分频系数:1~65536)

  1. 可用于触发DAC、ADC

  1. 在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请求4个独立通道,可用于:输入捕获输出比较输出PWM单脉冲模式使用外部信号控制定时器且可实现多个定时器互连的同步电路支持编码器和霍尔传感器电路等

2.2.2定时器框图
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

①时钟源:

  1. 通过APB1提供的时钟源,

  1. 内部触发输入,TIM_ETR复用

  1. IO口提供时钟源,外部时钟模式2

  1. 外部时钟模式1,来自通道1和通道2

②控制器:

  1. 触发控制器:TRGO可以连接到其他定时器,作为触发信号,完成定时器的级联

  1. 从模式控制器:复位,使能,递增,计数

  1. 编码器接口:连接编码器

③时基单元:与基本定时器一致,用于计数

④输入捕获:

  1. 通过通道捕获型号,经过滤波器过滤和边沿检测器检测,得到TI1FP1和TI1FP2信号,将信号映射到预分频器产生IC1PS信号,产生捕获事件,将CNT计数器的值进行比较

⑤捕获/比较(公共):

⑥输出比较:

  1. 向比较寄存器的影子寄存器写入比较值,计数器正常计数,当计数器的值和比较值相等时,产生比较事件

2.2.3计数器时钟源
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

①内部时钟(CK_INT),来自外设总线APB提供的时钟

②外部时钟模式1:外部输入引脚(TIx),来自定时器通道1或者通道2引脚的信号

③外部时钟模式2:外部触发输入(ETR),来自可以复用为TIMx_ETR的IO引脚

④内部触发输入(ITRx),用于与芯片内部其它通用/高级定时器级联

计数器时钟选择类型

设置方法

内部时钟(CK_INT)

设置TIMx_SMCR的SMS=000

外部时钟模式1:外部输入引脚(TIx)

设置TIMx_SMCR的SMS=111

外部时钟模式2:外部触发输入(ETR)

设置TIMx_SMCR的ECE=1

内部触发输入(ITRx)

设置可参考STM32F10xxx参考手册_V10(中文版).pdf,14.3.15节

2.2.3.1 外部时钟模式1
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
2.2.3.2 外部时钟模式2
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

在外部时钟模式1中,定时器仅在每次外部脉冲到达时进行计数;而在外部时钟模式2中,定时器可以在外部脉冲到达时和外部脉冲消失时各进行一次计数,因此可以更精确地控制定时器的计数。

2.2.3.3 内部触发输入(ITRx)
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
2.2.4 PWM输出
2.2.4.1比较部分框图
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

捕获/比较通道1的主电路---输出部分:

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

捕获/比较通道的输出部分(通道1):

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
2.2.4.2 PWM原理
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

2.2.5配置步骤

输出PWM:

步骤

操作

函数

1

配置定时器基础工作参数

HAL_TIM_PWM_Init()

2

定时器PWM输出MSP初始化

HAL_TIM_PWM_MspInit() 配置NVIC、CLOCK、GPIO等

3

配置PWM模式/比较值等

HAL_TIM_PWM_ConfigChannel()

4

使能输出并启动计数器

HAL_TIM_PWM_Start()

5

修改比较值控制占空比(可选)

__HAL_TIM_SET_COMPARE()

6

使能通道预装载(可选)

__HAL_TIM_ENABLE_OCxPRELOAD()

函数

主要寄存器

主要功能

HAL_TIM_PWM_Init()

CR1、ARR、PSC

初始化定时器基础参数

HAL_TIM_PWM_MspInit()

存放NVIC、CLOCK、GPIO初始化代码

HAL_TIM_PWM_ConfigChannel()

CCMRx、CCRx、CCER

配置PWM模式、比较值、输出极性等

HAL_TIM_PWM_Start()

CCER、CR1

使能输出比较并启动计数器

__HAL_TIM_SET_COMPARE()

CCRx

修改比较值

__HAL_TIM_ENABLE_OCxPRELOAD()

CCER

使能通道预装载

输入捕获:

步骤

操作

函数

1

配置定时器基础工作参数

HAL_TIM_IC_Init()

2

定时器输入捕获MSP初始化

HAL_TIM_IC_MspInit() 配置NVIC、CLOCK、GPIO等

3

配置输入通道映射、捕获边沿等

HAL_TIM_IC_ConfigChannel()

4

设置优先级,使能中断

HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

5

使能定时器更新中断

__HAL_TIM_ENABLE_IT()

6

使能捕获、捕获中断及计数器

HAL_TIM_IC_Start_IT()

7

编写中断服务函数

TIMx_IRQHandler()等  HAL_TIM_IRQHandler()

8

编写更新中断和捕获回调函数

HAL_TIM_PeriodElapsedCallback() HAL_TIM_IC_CaptureCallback()

函数

主要寄存器

主要功能

HAL_TIM_IC_Init()

CR1、ARR、PSC

初始化定时器基础参数

HAL_TIM_IC_MspInit()

存放NVIC、CLOCK、GPIO初始化代码

HAL_TIM_IC_ConfigChannel()

CCMRx、CCER

配置通道映射、捕获边沿、分频、滤波等

__HAL_TIM_ENABLE_IT()

DIER

使能更新中断等

HAL_TIM_IC_Start_IT()

CCER、DIER、CR1

使能输入捕获、捕获中断并启动计数器

HAL_TIM_IRQHandler()

SR

定时器中断处理公用函数,处理各种中断

HAL_TIM_PeriodElapsedCallback()

定时器更新中断回调函数,由用户重定义

HAL_TIM_IC_CaptureCallback()

定时器输入捕获回调函数,由用户重定义

再HAL库中,不需要对中断类型经行设置,采用各种中断的回调函数来达到各种中断的作用

外部输入模式一:

步骤

操作

函数

1

配置定时器基础工作参数

HAL_TIM_IC_Init()

2

定时器输入捕获MSP初始化

HAL_TIM_IC_MspInit() 配置NVIC、CLOCK、GPIO等

3

配置定时器从模式等

HAL_TIM_SlaveConfigSynchro()

4

使能输入捕获并启动计数器

HAL_TIM_IC_Start()

5

获取计数器的值

__HAL_TIM_GET_COUNTER()

6

设置计数器的值

__HAL_TIM_SET_COUNTER()

函数

主要寄存器

主要功能

HAL_TIM_IC_Init()

CR1、ARR、PSC

初始化定时器基础参数

HAL_TIM_IC_MspInit()

存放NVIC、CLOCK、GPIO初始化代码

HAL_TIM_SlaveConfigSynchro()

SMCR、CCMRx、CCER

配置定时器从模式、触发选择、分频、滤波等

HAL_TIM_IC_Start()

CCER、CR1

使能输入捕获、启动计数器

__HAL_TIM_GET_COUNTER()

CNT

获取计数器当前值

__HAL_TIM_SET_COUNTER()

CNT

设置计数器的值

2.3高级定时器

2.3.1定时器介绍

高级定时器:TIM1/TIM8

主要特性:

  1. 16位递增、递减、中心对齐计数器(计数值:0~65535)

  1. 16位预分频器(分频系数:1~65536)

  1. 可用于触发DAC、ADC

  1. 在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请求4个独立通道,可用于:输入捕获、输出比较、输出PWM、单脉冲模式

  1. 使用外部信号控制定时器且可实现多个定时器互连的同步电路支持编码器和霍尔传感器电路等

  1. 重复计数器

  1. 死区时间带可编程的互补输出

  1. 断路输入,用于将定时器的输出信号置于用户可选的安全配置中

2.3.2定时器框图
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
  1. 有重复计数器,当计数器溢出后等重复计数器为0的时候才会触发中断

  1. N为互补通道,123有4无,DTG可以设置死区事件

  1. 刹车输入功能,产生刹车中断

2.3.3输出多个PWM
2.3.3.1重复计数器

计数器每次上溢或下溢都能使重复计数器减1,减到0时,再发生一次溢出就会产生更新事件

如果设置RCR为N,更新事件将在N+1次溢出时发生

stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
2.3.3.2输出多个PWM
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
  1. 配置边沿对齐模式输出PWM

  1. 指定输出N个PWM, 则把N-1写入RCR

  1. 在更新中断内,关闭计数器

注意:高级定时器通道输出必须把MOE位置1

步骤

操作

函数

1

配置定时器基础工作参数

HAL_TIM_PWM_Init()

2

定时器PWM输出MSP初始化

HAL_TIM_PWM_MspInit() 配置NVIC、CLOCK、GPIO等

3

配置PWM模式/比较值等

HAL_TIM_PWM_ConfigChannel()

4

设置优先级,使能中断

HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

5

使能定时器更新中断

__HAL_TIM_ENABLE_IT()

6

使能输出、主输出、计数器

HAL_TIM_PWM_Start()

7

编写中断服务函数

TIMx_IRQHandler()等  HAL_TIM_IRQHandler()

8

编写更新中断回调函数

HAL_TIM_PeriodElapsedCallback()

2.3.4高级定时器输出比较模式
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

步骤

操作

函数

1

配置定时器基础工作参数

HAL_TIM_OC_Init()

2

定时器输出比较MSP初始化

HAL_TIM_OC_MspInit() 配置NVIC、CLOCK、GPIO等

3

配置输出比较模式等

HAL_TIM_OC_ConfigChannel()

4

使能通道预装载

__HAL_TIM_ENABLE_OCxPRELOAD()

5

使能输出、主输出、计数器

HAL_TIM_OC_Start()

6

修改捕获/比较寄存器的值

__HAL_TIM_SET_COMPARE()

函数

主要寄存器

主要功能

HAL_TIM_OC_Init()

CR1、ARR、PSC

初始化定时器基础参数

HAL_TIM_OC_MspInit

存放NVIC、CLOCK、GPIO初始化代码

HAL_TIM_OC_ConfigChannel()

CCMRx、CCRx、CCER

设置输出比较模式、比较值、输出极性等

__HAL_TIM_ENABLE_OCxPRELOAD()

CCMRx

使能通道预装载

HAL_TIM_OC_Start()

CR1、CCER、BDTR

使能输出比较、主输出、启动计数器

__HAL_TIM_SET_COMPARE()

CCRx

修改捕获/比较寄存器的值

2.3.4高级定时器输出比较模式实验
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档
stm32 timer,stm32,单片机,嵌入式硬件,Powered by 金山文档

步骤

操作

函数

1

配置定时器基础工作参数

HAL_TIM_PWM_Init()

2

定时器PWM输出MSP初始化

HAL_TIM_PWM_MspInit() 配置NVIC、CLOCK、GPIO等

3

配置PWM模式/比较值等

HAL_TIM_PWM_ConfigChannel()

4

配置刹车功能、死区时间等

HAL_TIMEx_ConfigBreakDeadTime()

5

使能输出、主输出、计数器

HAL_TIM_PWM_Start()

6

使能互补输出、主输出、计数器

HAL_TIMEx_PWMN_Start()

函数

主要寄存器

主要功能

HAL_TIM_PWM_Init()

CR1、ARR、PSC

初始化定时器基础参数

HAL_TIM_PWM_MspInit()

存放NVIC、CLOCK、GPIO初始化代码

HAL_TIM_PWM_ConfigChannel()

CCMRx、CCRx、CCER

配置PWM模式、比较值、输出极性等

HAL_TIMEx_ConfigBreakDeadTime()

BDTR

配置刹车功能、死区时间等

HAL_TIM_PWM_Start()

CCER、CR1

使能输出、主输出、启动计数器

HAL_TIMEx_PWMN_Start()

CCER、CR1

使能互补输出、主输出、启动计数器文章来源地址https://www.toymoban.com/news/detail-701568.html

到了这里,关于STM32_TIMER(全)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机STM32看门狗详解(嵌入式学习)

    单片机STM32的看门狗(Watchdog)是一种硬件定时器,用于监控系统的运行状态并在出现故障或死锁时采取措施以恢复正常操作。看门狗的主要功能是定期检查系统是否正常运行,并在系统出现问题时触发复位操作。 STM32系列单片机通常配备了内置的看门狗定时器(通常称为独立

    2024年02月13日
    浏览(63)
  • 【单片机毕设选题】stm32实现车牌识别系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(60)
  • 单片机项目分享 stm32机器视觉的人脸识别系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月22日
    浏览(84)
  • stm32毕设分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(77)
  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(113)
  • 嵌入式STM32 单片机 GPIO 的工作原理详解

    STM32的 GPIO 介绍 GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 以 STM32F103ZET6 芯片为例子,该芯片共有 144 脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为

    2024年02月20日
    浏览(50)
  • stm32毕设分享 stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(60)
  • stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(62)
  • 【单片机毕设选题】 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(67)
  • 单片机项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包