文章目录

  • 一、前言
  • 二、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为高电平。

二、CubeMX

2.1、Clock Configuration

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

2.2、TIM8 Mode and Configuration

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

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模式)相关推荐

  1. STM32单片机:定时器TIM输出PWM波

    学习32单片机过程中使用的工具:MDK Keil5 + 正点原子精英版(STM32F103ZET6)+ STM32CubeMX + HAL开发 一.PWM的产生原理 关于PWM的产生原理网上有很多教程 ...

  2. STM32H743+CubeMX-定时器TIM输出PWM(Out Compare模式) + 中断

    文章目录 一.前言 二.CubeMX 2.1.NVIC Settings 2.2.生成代码 三.代码 3.1.tim.c 四.DEBUG 五.细节补充 一.前言 STM32H743+CubeMX-定时 ...

  3. STM32H743+CubeMX-低功耗定时器LPTIM输出PWM波

    文章目录 一.前言 二.CubeMX 2.1.Clock Configuration 2.2.LPTIM2 Mode and Configuration 2.3.Parameter Settings ...

  4. STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式)

    文章目录 一.前言 二.CubeMX 2.1.Clock Configuration 2.2.TIM8 Mode and Configuration 2.3.Parameter Settings Co ...

  5. STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式)+ 中断

    文章目录 一.前言 二.CubeMX 2.1.Mode and Parameter Settings 2.2.NVIC Settings 2.3.生成代码 三.代码 3.1.tim.c 3.2.mai ...

  6. 沁恒CH32V307使用记录:使用TIM输出PWM信号

    文章目录 目的 基础说明 使用例程 总结 目的 使用TIM输出PWM信号是单片机中比较常用的一个功能.这篇文章将对CH32V307中相关内容进行说明. 本文使用沁恒官方的开发板 (CH32V307-E ...

  7. GD32F303固件库开发(13)----定时器TIM捕获PWM测量频率与占空比

    GD32F303固件库开发.13----定时器TIM捕获PWM测量频率与占空比 概述 视频教学 csdn课程 样品申请 生成例程 keil配置 使能串口 串口重定向 占空比与频率计算 GPIO初始化 ...

  8. [控制基础] 定时器TIM的PWM输出+用积分思想分析PWM对直流减速有刷电机的控制(基于STM32F103+CubeMX+HAL)

    目录 解决的需求 一.高级定时器TIM1/TIM8 1.时基单元 2.更新操作与更新事件 3.与其他定时器的比较 ①.与其他定时器时基单元的比较 ②.与通用定时器的比较 4.CK_INT与CK_CNT ...

  9. STM32F7同一定时器多路输出PWM波通道之间相互影响问题

    --------------------------2020/8/12更新-------------------------------- 这次用Cube直接生成PWM控制代码,然后再RT-Threa ...

最新文章

  1. 微软宣布公开预览其内容分发网络
  2. 计算机软考知识点总结,历年计算机软考《系统分析师》复习知识点总结(8)
  3. Lanecat网猫的案例
  4. 云原生应用架构转型不好做?阿里云这个平台让你一步到位!
  5. Linux 打包 压缩 解压缩 命令
  6. java 常用 函数_java在线报表中有哪些常用函数
  7. Careercup - Facebook面试题 - 4907555595747328
  8. 计算机网络分为点到点网络和,计算机网络-判断题
  9. H5拼团抽奖拆盲盒源码/价值几万的H5拼团抽奖拆盲盒模式源码
  10. igraph与netwrokx的转换
  11. #VCS# 关于VCS 编译选项 《-v 、 -y 、+libext+》 的理解
  12. 投放Google广告怎么做才是最合适的?谷歌广告的优势在哪
  13. WIFI驱动开发——WIFI基础知识汇总
  14. OpenHarmony社区开源代码下载及编译
  15. strtok函数的使用
  16. php采集淘宝店的评论,php采集淘宝店铺的所有评论的实现
  17. 华为自研系统鸿蒙,全球第一家!魅族官方中午12点宣布:看我力挺华为鸿蒙OS系统崛起...
  18. 网狐6603服务器文档,网狐6603服务器配置
  19. atto软件测试速度,评测平台介绍及HD Tune、ATTO性能测试
  20. IFR报告显示过去五年全球工业机器人销量翻番

热门文章

  1. 全排列(去除重复)Permutations II
  2. docker探索-windows10 docker 使用 mysql(二)
  3. Linux性能调优、Linux集群与存储等
  4. HP-JavaUtil: xls 操作类
  5. 从UnitedStack OS 1.0 Preview试用申请问卷调查学习OpenStack
  6. 【狂转】某个N人的访谈记录(完)
  7. 飞鸽传书:浅谈 Scrum
  8. HOWTO:将 IOCTL 发送到筛选器驱动程序
  9. Symbian和C++ SDK开发入门之应用程序
  10. 水滴石穿C语言之可变参数问题