我是靠谱客的博主 无心大白,最近开发中收集的这篇文章主要介绍STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)一、前言二、CubeMX三、代码四、示波器五、细节补充,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、前言
  • 二、CubeMX
    • 2.1、Clock Configuration
    • 2.2、TIM8 Mode and Configuration
    • 2.3、Parameter Settings
      • Counter Settings
      • Output Compare Channel1 与 Output Compare Channel2
      • 其他
    • 2.4、生成代码
  • 三、代码
    • 3.1、tim.c
    • 3.2、烧写代码
  • 四、示波器
  • 五、细节补充

相关笔记:
STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式)
STM32H743+CubeMX-低功耗定时器LPTIM输出PWM波

一、前言

PWM波形在实际工作上有非常广泛的使用,尤其在步进电机控制与LED阵列的控制。使用定时器的输出比较模式(使用定时器的PWM模式也可以)让TIM8的通道1与通道2产生PWM波形,如下图所示,PWM波形的频率5kHz。
通道1与通道2的PWM关系是非对称关系,相当于互斥。
当通道1为高电平时,通道2为低电平。
当通道1为低电平时,通道2为高电平。
Out_Compare

二、CubeMX

2.1、Clock Configuration

根据《STM32H7x3编程参考手册》第102页,TIM8的时钟源是APB2。当前工程上APB2的时钟频率是240M(后续用于计算PWM的周期)。
APB2
TIM8

2.2、TIM8 Mode and Configuration

选择TIM8,然后使能通道1与通道2,其他选项不用管。
Mode

2.3、Parameter Settings

Counter Settings

TIM8的溢出频率=240M / ( Counter Period + 1 ) / ( Prescaler + 1 ),如下图所示,TIM8的溢出频率 = 240M / 24000 / 1 = 10kHz。 周期T = 1 / f = 1 / 10k = 100us。
所以TIM8的溢出频率是10kHz,周期T是100us。
在这里插入图片描述

Output Compare Channel1 与 Output Compare Channel2

Mode使用Toggele on match(即定时器ARR寄存器溢出就翻转电平),因为通道1与通道2的PWM是非对称关系,所以通道1的CH Polarity与通道2的CH Polarity需取反。
在这里插入图片描述

其他

其他配置都不用管,默认。
在这里插入图片描述

2.4、生成代码

选择生成代码的方式。
在这里插入图片描述

三、代码

3.1、tim.c

在函数MX_TIM8_Init(void)下添加用户代码,调用函数HAL_TIM_OC_Start( )启动每一个通道的PWM输出。
在这里插入图片描述

3.2、烧写代码

编译,烧写代码,接着使用示波器检测PC6与PC7即可。
在这里插入图片描述
在这里插入图片描述

四、示波器

在2.3章节将Counter Period设为23999,从而使TIM8的溢出频率为10kHz。从下图看到PWM波的频率不是10kHz,而是5kHz。为什么频率变成原来的1/2?
原因是Output Compare的Mode为Toggle on match。意思是定时器每溢出1次,就翻转电平1次。电平翻转2次才算是PWM波形,所以PWM波的频率 = TIM8溢出频率 / 2 = 10kHz / 2 = 5kHz。
所以,使用输出比较模式产生PWM波时,关键是弄明白Counter Period的值与APB2频率是如何影响定时器产生PWM波的频率。
在这里插入图片描述

五、细节补充

  1. Output Compare模式产生PWM波没那么容易修改占空比,因为参数Pulse不起作用。在PWM Gernation模式下,由Counter Period与Pulse参数共同决定了PWM的频率与占空比。
  2. Output Compare模式产生PWM波的频率并不是定时器ARR寄存器溢出的频率,而是ARR寄存器溢出频率的一半,PWM Gernation模式产生PWM波的频率就是定时器ARR寄存器溢出的频率,要区分开。

最后

以上就是无心大白为你收集整理的STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)一、前言二、CubeMX三、代码四、示波器五、细节补充的全部内容,希望文章能够帮你解决STM32H743+CubeMX-定时器TIM输出PWM(Output Compare模式)一、前言二、CubeMX三、代码四、示波器五、细节补充所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部