绪言

PWM是TIM常见的作用之一,如果无法理解TIM的基本工作原理的话,可能理解起来很困难。当我第一次接触到PWM的时候,其实也是云里雾里的。但如果理解了TIM的基本工作原理,学习PWM还是很简单的。

关于TIM的基本工作原理可见往期文章:

https://blog.csdn.net/qq_58973969/article/details/125065903?spm=1001.2014.3001.5501https://blog.csdn.net/qq_58973969/article/details/125065903?spm=1001.2014.3001.5501

一、PWM输出的整体工作框架梳理

这里我们可以看ST官方手册给出的TIM工作框图:

第一部分的内容主要是让定时器工作在计数状态,往期文章已经说过了,这里就不在赘述了。我们重点看第二部分。可以看出,我们只需要通过捕获/比较寄存器和输出控制,就能让定时器输出PWM。而且可以办到四路输出。这里暂且只介绍一个整体框架,让大家有个印象,那么这个过程具体是怎么实现的呢?这就需要我们进一步去剖析底层的东西了。

二、相关寄存器剖析

在之前我们已经介绍过了CR1、ARR、PSC等寄存器,这里就不再一一介绍了。主要说一下有区别的地方和还需要用到的寄存器。

ARR寄存器:ARR寄存器的作用其实和基本计数的时候没有太大区别。这里特别提一下,在PWM输出中ARR还可以控制PWM输出的频率。因为在时钟频率确定的情况下,ARR中数值的大小其实就确定了一次计数从开始到溢出的时间,从而也就决定了频率。

CCRx寄存器:和ARR类似,也是一个储存16位数值的寄存器,其储存的数值用于的当前计数值(CNT)比较,然后得出此时是有效电平还是无效电平。(根据模式而定)

CCMRx寄存器:用于配置PWM的输出模式。其中CCxS[1:0]决定输入还是输出,这里配置为输出模式。OCxM[2:0]用于配置有效电平的选取。其中有两种模式:

模式一:CNT<CCRx为有效电平

模式二:CNT>CCRx为有效电平

PS:这里的有效电平可以是高也可以是低,相反的,无效电平与有效电平极性相反。并且大小比较与计数方向无关。

OCxPE位与之前说的ARPE的作用类似,ARPE是使能ARR的预装载,而OCxPE是使能CCR的预装载。

CCER寄存器:CCxP位用于配置输出极性,即有效电平为高还是低。CCxE位为输出使能位。

EGR寄存器:UG位置1可产生一个更新事件,作用是将我们之前配置的东西(存在缓冲)全部写进去。

这些寄存器可总结如下:

最后博主还是采用抽象艺术的形式给大家大概描述一下PWM输出的工作形式:

这里以向上计数为例。其中占空比q有两个结果,主要与输出极性和模式的配置有关(有效电平是高还是低)。

三、CubeMx的配置

CubeMx的配置主要分为三大部分

第一部分:

前两项为从模式的配置,这里不用管。时钟选用内部时钟;通道选择为PWM输出,这里以通道一为例。

第二部分:
分别用于配置PSC预分频系数(71+1);CMS、DIR计数模式配置(例如向上UP);ARR自动重装载寄存器 (7199+1);CKD不用管;自动重装载这里选择使能。

第三部分:
PWM模式:模式一或者模式二;占空比配置(即配置CCRx寄存器);输出比较重装载(CCR预装载,这里选择使能);快速PWM模式,这里不用管,先择不使能;最后一个是通道极性的配置,也就是有效电平为高还是低。

通过这些简单的可视化图形配置,就将我们之间所说的寄存器全部配置好了。可以看出CubeMx工具还是非常强大的。

HAL库自学笔记#2【PWM】相关推荐

  1. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  2. STM32 HAL库学习笔记4-SPI

    STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...

  3. STM32F407霸天虎HAL库学习笔记——串口发送

    STM32F407霸天虎HAL库学习笔记--串口收发 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil printf重写 main函数 五.实验效果 一.软件准备 软件准备 二.硬件准备 ...

  4. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  5. STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据并通过OLED显示

    STM32F407霸天虎HAL库学习笔记--使用ADC采集MQ135的数据并通过OLED显示 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil MQ135.c MQ135.h main函 ...

  6. 【STM32】HAL库 STM32CubeMX教程七---PWM输出(呼吸灯)

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  7. STM32cubemx——HAL库学习笔记 六、IWDG独立看门狗的配置

    一.配置STM32cubeMX工程 在配置好时钟和调试设备以后进行一下操作即可以使用 看门狗的溢出时间公式为 Tout= 分频系数/ 时钟 * 重装载值 二.IWDG的技术讲解 可以到看,看门狗相对于 ...

  8. HAL库配置STM32F1系列PWM驱动步进电机(一)

    步进电机在3D打印机.机床CNC等很多领域有广泛的应用,这个系列用于记录笔者在学习步进电机过程中遇到的问题以及解决思路 1 电机原理 电机的分类有下述几种 具体原理可以参考这篇文章,介绍的很详细 (7 ...

  9. HAL库配置STM32F1系列PWM驱动步进电机(二)

    接着上一篇,我要先补完利用PWM对步进电机进行调速的实验 PWM主要有两大要素:频率&占空比 频率 简单来说就是信号在1s内由高电平跳转到低电平再跳转回高电平的次数,一高一低再一高,这便是一个 ...

最新文章

  1. WGCNA加权基因共表达网络分析(1)简介、原理
  2. 在读研、竞赛和实习中追求平衡
  3. spring data mongo比较两个字段查询
  4. greta一些简单实用的字符串匹配
  5. 有类似split的命令吗_5分钟学linux命令之split
  6. leetcode-114-二叉树展开为链表*
  7. 计算机组成原理二进制地址码,计算机组成原理第四章第三讲.ppt
  8. Intel Core Enhanced Core架构/微架构/流水线 (15) - 先进智能缓存
  9. H3C PBR实验(策略路由)
  10. java 权限管理都用什么_java权限管理框架有哪些?
  11. 判断点在多边形内(射线法)
  12. 利用第三方软件识别图片文字并转换为文本
  13. 【Java基础】ArraylistLinkedList机制,failfastfailsafe
  14. 理解Intel cpufreq intel_pstate driver的工作模式
  15. 什么是App分发?有哪些分发平台可以选择?
  16. 简单实用的出入库管理系统,帮你实现库存精细化管理!
  17. pq分解法matlab程序,基于MATLAB软件的PQ分解法潮流计算
  18. 【STM32F407的DSP教程】第3章 Matlab简易使用之基础操作
  19. 拓维信息鸿蒙服务器,润和软件、常山北明、诚迈科技、拓维信息,谁是华为鸿蒙真龙头?...
  20. LSA(Latent semantic analysis)

热门文章

  1. 自建WIFI热点传输应用评测: 还在用蓝牙传文件?你OUT了
  2. excel shell合成_1分钟拆解:「如何将10多个工作表sheet,合并成一张?」
  3. Word如何拆分单元格
  4. java导出的excel数字过长_用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)...
  5. Python的基本语法(十一)(持续更新)
  6. 基于Python的微信朋友圈数据可视化分析之地点
  7. excel批量提取网页标题
  8. Java_web笔记: 含html、css、js、servlet、jsp
  9. 在 Excel 启动时运行宏
  10. java《面向对象综合题》