从公式剖析stm32中PWM的使用

article/2025/10/5 7:54:22

目录

一、PWM简介

1.介绍:

2.主要参数

二、stm32PWM产生方式 

1,普通IO口

2,PWM口

三、定时器复习

四、公式推导及结论

五、stm32PWM具体的运用

1.电机

2.舵机

一、PWM简介

1.介绍

脉冲调制技术(PWM  Pulse Width Modulatio),百度百科上的解释是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。用普通话来解释就是通过控制一个周期中的脉宽时间(高电压时间)来实现输出电压的变化。

2.PWM的主要参数

于是为了控制PWM输出的电压值,我们就需要控制以下变量

                                                              周期T       脉宽时间T1  

输出的占空比就等于T1/T

二、PWM产生方式 

1,普通IO口

为了产生可控的PWM信号我们只需要产生一个周期T,然后把这个周期的一段时间T1拉高就好了。自然而然我们可以使用定时器产生一个人为的周期,例如在定时器向上计数模式中,通过定义一个变量count=0,当count小于5时给高电平,大于5时给低电平,等于10时将count重置为0,来达到模拟pwm的目的(但是由于有其他中断的干扰,不够精确)

2,PWM口

        不过stm32在设计时就想到我们会使用PWM,所以T1和T8定时器有一个pwm模式,通过配置比较寄存器CRR(count),自动重装载寄存器ARR(数字10),以及预分频器TIMx_PSC(可以理解为计数的速度),捕获/比较寄存器 1TIMx_CCR1(数字5)就可以实现同样的功能。与普通IO口产生的寄存器相比更精确(说明),也耗费更少的MCU资源。

套用一下原子哥的图

最开始为低电平,CNT随着时间增加,到达CCRx时候,电平拉高,CNT继续增加,直到计数到ARR的值,电平重新拉低。

三、定时器复习

在推导出最后的公式之前,我们先简单复习一下上述的几个寄存器

  1. 自动装载寄存器 (TIMx_ARR) 人为设置的定时器计数最大值。计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后重新从0开始计数并且产生一个计数器溢出事件。

  2. TIM1 TIM8 捕获 / 比较寄存器 1(TIMx_CCR1):用于比较的寄存器,控制最后的占空比
  3. 计数器寄存器(TIMx_CNT)  :此时定时器的计数值对于这两个寄存器, 我们可以在TIM1 TIM8 捕获 / 比较模式寄存器 1(TIMx_CCMR1)找到以下描述​​​​​​​
  4.  预分频器寄存器 (TIMx_PSC)   :将计数器的时钟频率按1到65536之间的任意值分频,减小频率,增加单周期的时长(计数器的时钟频率(CK_CNT)等于fCK_PSC/( PSC+1)

四、公式推导及结论

为了以下公式的简洁以及方便理解,先做以下声明

  • 最大计数值:                                 ARR  
  • 比较计数值(比较寄存器):               CCRx
  • 预分频系数:                                 PSC
  • 计数器的时钟频率 :                       CK_CNT 
  • 输入预分频器的时钟频率:           fCK_PSC​​​​​​​

                 即计数器的时钟频率(一个cpu周期时间的倒数):fCK_CNT
  • PWM的高电平时间:                      T1

  • pwm单个的周期:                           T

1. fCK_CNT=fCK_PSC/( PSC+1)      

2. T=(ARR+1)/fCK_CNT =(ARR+1)  / (fCK_PSC/(PSC+1))

3. T1=CCRx/fCK_CNT

4. 占空比=T1/T=CCRx/ARR

备注:

  1. 因为PSC和ARR都是从零开始计数,所以要+1
  2. 有四个CCRx寄存器,分别是TIMx_CCR1,TIMx_CCR2,TIMx_CCR3,TIMx_CCR4,换句话说stm32的一个定时器可以产生四路不同的的pwm信号。​​​​​​​

五、PWM具体运用

1.电机

控制电机的基本逻辑是:改变pwm的占空比 -> 改变电压的大小 ->  改变电机的速度

步骤如下

  1. pwm初始化,即确定自动装载值arr(计数最大值),预分频系数psc(不重要,但是为了方便以后舵机的控制,建议设为719,而arr设为1999),设置占空比初值TIMx_CCRx
  2. 通过改变TIMx_CCRx(注意不要大于ARR的值),从而改变占空比

2.舵机

舵机的角度控制仅与高电平脉宽有关,一般来说,舵机接收的PWM信号频率为50HZ即周期为20ms。当高电平的脉宽在0.5ms-2.5ms之间时舵机就可以对应旋转到不同的角度。

综上,要控制电机需要

  1. 初始化:满足PWM信号频率为50HZT=(ARR+1)/ fCK_CNT = (ARR+1)* (fCK_PSC/(PSC+1))要等于20ms ,所以一般设置psc=719,arr=1999。

        T=2000/(72 000 000/720)=0.02s=20ms

    2.T1要在0.5ms-2.5ms之间

引用STM32 PWM控制舵机_追兮兮的博客-CSDN博客_stm32pwm控制舵机的图示

  1. t = 0.5ms(CRR=50,   占空比=2.5%)——————-舵机会转到 0 °
  2. t = 1.0ms(CRR=100, 占空比=5%   )——————-舵机会转到 45°
  3. t = 1.5ms(CRR=150, 占空比=7.5%)——————-舵机会转到 90°
  4. t = 2.0ms(CRR=200, 占空比=10%)——————-舵机会转到 135°
  5. t = 2.5ms(CRR=250, 占空比=12.5%)——————-舵机会转到 180°

参考:STM32——PWM知识详解_笛卡尔的叹息的博客-CSDN博客_stm32pwm配置详解

            STM32 PWM控制舵机_追兮兮的博客-CSDN博客_stm32pwm控制舵机


http://chatgpt.dhexx.cn/article/xE7OWZXp.shtml

相关文章

STM32 PWM控制电机寄存器配置

脉冲宽度调制PWM&#xff0c;实现对电机速度的控制。 1、PWM输出原理 假定定时器工作在向上计数 PWM模式&#xff0c;CNT为当前计数值&#xff0c;CCRx为捕获/比较寄存器CCRx的值(预装载值)。当 CNT<CCRx 时&#xff0c;GPIO口 输出低电平0&#xff0c;当 CNT>CCRx 时&…

【嵌入式基础】定时器PWM练习

本次实验是在前面实验的基础上加入定时器和PWM脉冲宽度调制&#xff0c;之前的延时功能都是通过delay函数实现的。而本次作业通过定时器Timer方式实现时间的精准控制&#xff0c;更有利于CPU的运行&#xff0c;再通过PWM脉冲宽度调制&#xff0c;输出波形&#xff0c;分析PWM的…

STM32—sg90编程

什么是舵机&#xff1f; 如下图所示&#xff0c;最便宜的舵机sg90&#xff0c;常用三根或者四根接线&#xff0c;黄色为PWM信号控制 用处&#xff1a;垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等 常见的有0-90、0-180、0-360 怎么控制舵机 向黄色信号线“…

【电机控制算法】SVPWM算法的应用(基于Simulink与STM32外设场景的仿真)

文章目录 前言一、扇区判断二、各扇区基础矢量作用时间的计算1.若处于扇区I2.若处于扇区II3.若处于扇区III4.若处于扇区IV5.若处于扇区V6.若处于扇区VI7.In a word 三、STM32的外设场景1. TIMx的计数器CNT2. TIMx的输入捕获寄存器CCRx3. TIMx的两种PWM模式 四、互补输出且呈中心…

STM32-定时器中断实验

一、通用定时器基本原理 1-1 三种定时器区别 1.三种STM32定时器区别 定时器种类位数计数器模式产生DMA请求捕获/比较通道互补输出特殊应用场景高级定时器&#xff08;TIM1,TIM8&#xff09;16向上&#xff0c;向下&#xff0c;向上/下可以4有带死区控制盒紧急刹车&#xff0…

CRC校验

一、CRC原理。 CRC校验的原理非常简单&#xff0c;如下图所示。 其中&#xff0c;生成多项式是利用抽象代数的一些规则推导出来的&#xff0c;而模2加&#xff08;也就是异或&#xff09;&#xff0c;是对应于有限域的除法。 二、CRC算法。 那么在FPGA当中&#xff0c;也有好…

CRC-16

文章目录 A.1 CRC16 算法A.1.1 CRC16 算法参数设置A.1.2 LengthA.1.3 CounterA.1.4 Data IDA.1.5 CRCA.1.6 CRC16 算法示例A.1.7 CRC16 算法推荐(查表法)A.1.8 CRC16 实例(查表法) A.1 CRC16 算法 A.1.1 CRC16 算法参数设置 CRC16 算法中要求了 Counter、Data ID、CRC 等参数…

CCR

不用任何与创建线程、资源互斥有关系的API写多线程程序 这次的例子&#xff0c;是一个很简单的控制台&#xff0c;她将面对瞬间提交的百万的数据&#xff0c;而面不改色&#xff08;CPU、内存非常平稳&#xff09;&#xff0c;队列中始终只保存最新的数据&#xff0c;每次只处理…

CRC16

CRC选择 当数据帧长度在8bits-128bits范围内时&#xff0c;推荐CRC-8(CRC-8能够减少额外比特的开销&#xff0c;且有更好的性能表现) 当数据帧长度在128bits-2048bits范围内时&#xff0c;推荐CRC-12&#xff0c;CRC-16&#xff0c;CRC-CCITT(CRC-12额外比特的开销更小&#x…

stm32cubemx HAL库之定时器

定时器原理简单说明&#xff1a; 如上图所示&#xff0c;定时器存在3个寄存器&#xff0c;分别是&#xff1a; 计数器寄存器&#xff08;CNT&#xff09; 预分频器寄存器&#xff08;PSC&#xff09; 自动重载寄存器&#xff08;ARR&#xff09; 预分频寄存器的输入频率是时钟…

CRC详解

CRC-知识解析 cyclic redundancy check 写在前面的话&#xff1a; 之前在做学校项目的时候用到了CRC 原理&#xff0c;但在网上查找的过程中&#xff0c;发现讲解CRC知识的资源很多&#xff0c;但是对新手比较友好的、讲的十分清楚的又很少&#xff0c;很多博主也不求甚解&am…

CCR(Condition Code Register:条件代码寄存器)的作用

CCR是一个显示执行指令后的结果和处理器的状态的8位寄存器。根据微型计算机的不同&#xff0c;名称也会不同&#xff0c;但是所有的微型计算机都有。在大多数微型计算机的情况下&#xff0c;用户不能直接读写&#xff0c;但有些微型计算机可以读写。您可以通过执行可以测试CCR位…

STM32定时器的预装寄存器及影子寄存器PSC—ARR-CCRx

在谈预装寄存器及影子寄存器的差别前&#xff0c;不妨先对STM32定时器的时基单元做个基本了解。STM32各系列的定时器结构和框架基本是一样的&#xff0c;时基单元也一样。 下面时基单元是以STM32F3系列为参考。 时基单元中的TIMx_PSC、 TIM_ARR两个寄存器加上捕捉比较模块中TIM…

输出比较功能中的pwm以及其他功能的区分

首先我们要知道的是pwm是输出比较的子集 PWM模式下&#xff1a; ARR 决定输出频率 &#xff0c;CCR决定输出占空比 输出比较模式下&#xff1a; ARR 决定输出频率 CCRx 决定每个通道的初始相位。 一般使用输出比较都是想要去输出一个频率可变的pwm信号&#xff0c;那怎么通过…

STM32 PWM输出

STM32 PWM输出 工作过程&#xff1a; 我们假定定时器工作在向上计数PWM 模式&#xff0c;且当 CNT<CCRx 时&#xff0c;输出 0&#xff0c;当 CNT>CCRx 时输出1。那么就可以得到如上的PWM 示意图&#xff1a; 当 CNT 值小于 CCRx 的时候&#xff0c;IO 输出低电平(0)&a…

简单明了的说明STM32的PWM原理以及实现方法

申明以下都是个人理解&#xff0c;仅供参考。如果错误欢迎指教。本文不讲底层&#xff0c;根据实际使用来逆向讲解。 1.什么是pwm&#xff1f; pwm最简单的理解就是“功率”&#xff0c;调节PWM的占空比就是调节功率。 2.如何调节占空比&#xff1f; 图1 根据图1很容易看出…

CCRX寄存器

TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);// TIMx_CCRx寄存器能够在任何时候通过软件进行更新以控制输出波形&#xff0c;条件是未使用预装载寄存器(OCxPE’0’&#xff0c;否则TIMx_CCRx影子寄存器只能在发生下一次更新事件时被更新)。这里设置为Disable 就是为了…

JavaScript权威指南 第13章 异步JavaScript

JavaScript权威指南 第13章 异步JavaScript 13章 异步JavaScript13.1 使用回调的异步编程13.1.1 定时器13.1.2 事件13.1.3 网络事件13.1.4 Node中的回调与事件 13.2 期约13.2.1 使用期约使用期约处理错误 13.2.2 期约链13.2.2 解决期约13.2.4 再谈期约和错误catch和finally方法…

javascript权威指南(第四版)

Java Script是一种功能强大的基于对象的脚本语言。Java Script程序可以直接嵌入HTML页面。与Web浏览器定义的文档对象模型(DOM)一起使用时&#xff0c;JavaScript可以创建动态HTML(DHTML)内容&#xff0c;允许用户与客户端的Web应用程序交互。 JavaScript语法以流行的程序设计语…

《JavaScript权威指南》学习笔记(一)

跟着《JavaScript权威指南》整理的一些知识点和自己的小拓展。有不足之处请指正。 1、try catch 防止程序异常直接报错退出&#xff0c;而是能对异常进行一些处理&#xff0c;具体处理就在catch中。最好是在最外层函数使用。 2、HTML不区分大小写、XHTML区分大小写、JavaScri…