STM32 PWM模式与输出比较模式的区别。PWM占空比不生效,在STM32CubeMX中配置PWM的两种模式——蓝桥杯嵌入式

简介: STM32 PWM模式与输出比较模式的区别。PWM占空比不生效,在STM32CubeMX中配置PWM的两种模式——蓝桥杯嵌入式

目录


什么是PWM

输出比较模式

PWM模式

区别与联系

PWM示波器上的效果


前言


      本篇文章是在使用示波器时,无法输出正常的PWM占空比的波形而写的,其原因就是输出比较模式与PWM模式所导致的。


正文


什么是PWM


       脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。


       PWM是定时器扩展出来的一个功能,本质上是使用一个比较计数器的功能。


        STM32没有专门的PWM引脚,所以使用IO口的复用模式。              


       配置过程一般为选定定时器、复用GPIO口、选择通道(传入比较值)、使能相应系统时钟、设定相应的预分频、计数周期、PWM模式(有两种)、电平极性等。


       在STM32中,定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出。


       ARR寄存器是用来配置计数器溢出周期(也就是计数器计数最大值,比如定时器使用时周期),也就是定时器定时周期或者作为pwm输出时的周期/频率,而TIMx_CCR捕获比较寄存器则是在作输出时作为计数器响应值,也就是pwm时改变占空比(波形)时使用的。  


输出比较模式


       STM32定时器输出比较模式是STM32定时器的一种工作模式,它可以通过改变ARR(自动重装载寄存器)和CCR(捕获比较寄存器)寄存器的值来控制输出的占空比,从而控制输出的电平。在输出比较模式下,CCR寄存器的值是固定的,而占空比是通过改变ARR寄存器(自动重装载值)的值来实现的。此外,每个通道可以产生不同频率的信号。


       在STM32CubeMX中的配置:


               通道选择Output Compare CH1,下面给触发器使能即可。

 


PWM模式


      PWM模式是一种定时器的工作模式,可以通过改变ARR和CCR寄存器的值来控制输出的占空比,从而控制输出的电平。


       脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。


       在TIMx_CCMRx寄存器中的OCxM位写入'110'(PWM模式1)或'111(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。


       在STM32CubeMX中的配置:


               通道选择PWMCompare CH1,下面给触发器使能即可。

        如果想在PWM模式下改变周期/频率,只需要将Parameter Settings 中的 auto-reload preload使能即可。


区别与联系


       PWM模式和输出比较模式都是STM32定时器的工作模式。它们都是通过改变定时器的计数值来控制输出的占空比,从而控制输出的电平。


       两者的区别在于(这里的固定都是在初始状态下,也是可以通过其他方法来调节的):


               PWM模式下,定时器的计数值是固定的,而占空比是通过改变CCRx寄存器的值来实现的;


               输出比较模式下,CCR寄存器的值是固定的,而占空比是通过改变ARR寄存器的值来实现的。


               此外,PWM模式下,所有通道产生的频率都是相同的;而在输出比较模式下,每个通道可以产生不同频率的信号。


我们通过图进一步了解一下这两个模式的区别。


       PWM模式下:


PWM示波器上的效果


      在STM32CubeMX中的配置


     示波器中的波形

               可以看到频率是200Hz(80MHz/(400*100)),符合我们上面的设置,占空比为20%,同样符合我们上面的设置。

相关文章
|
4天前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
|
1天前
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
21 14
|
1天前
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
20 13
|
1天前
STM32CubeMX PWM
STM32CubeMX PWM
17 9
|
8天前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
|
8天前
|
数据安全/隐私保护
STM32F103C8T6实现简易密码锁(CubeMax配置)(一),Oled显示。
项目功能:实现设置密码,登陆密码,后期还可以通过E2PROM实现掉电不丢失数据。通过Oled的显示去判断我们是否设置或者登陆成功。
|
1月前
|
传感器
【经典案例】STM32F407使用HAL库配置I2C详解
STM32F407是一个强大的微控制器,广泛应用于嵌入式系统中。在许多应用中,我们需要使用I2C总线来与传感器、EEPROM、显示屏等外设进行通信。本文将详细介绍如何使用STM32 HAL库来配置和使用I2C接口。
55 2
|
1月前
|
开发者
【经典案例】使用HAL库配置STM32F407的SPI外设
在嵌入式系统开发中,STM32F407是一款广泛应用的微控制器,而SPI(Serial Peripheral Interface)是一种常用的通信接口。本文将详细介绍如何使用STM32的硬件抽象层(HAL)库配置STM32F407的SPI外设,并提供完整的代码示例。
67 1
|
26天前
|
存储 数据安全/隐私保护 芯片
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
|
26天前
|
芯片
【STM32】详解RTC实时时钟的概念和配置&示例代码
【STM32】详解RTC实时时钟的概念和配置&示例代码