用STM32F103输出一路PWM波形

文章目录


一、PWM简介

PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调 制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控 制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成 为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信, 功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些 音频放大器,因此学习PWM具有十分重要的现实意义。 其实我们也可以这样理解,PWM是一种对模拟信号电平进行数字编码 的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个 具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的 任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压 或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去 的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被 断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码
  在这里插入图片描述

二.STM32F1 PWM介绍

STM32F1除了基本定时器TIM6和TIM7,其他定时器都可以产生PWM输出 。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出 。而通用定时器也能同时产生多达 4路的 PWM 输出,这些在定时器中断 章节中已经介绍过。 PWM的输出其实就是对外输出脉宽可调(即占空比调节)的方波信号 ,信号频率是由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。
在这里插入图片描述
  PWM输出比较模式总共有8种,具体由寄存器 CCMRx 的位 OCxM[2:0] 配置。我们这里只讲解最常用的两种PWM输出模式:PWM1和PWM2,其他几 种模式可以参考《STM32F10x中文参考手册》13、14、15定时器章节。
PWM1和PWM2这两种模式用法差不多,区别之处就是输出电平的极性不 同。
  在这里插入图片描述
PWM模式根据计数器CNT计数方式,可分为边沿对齐模式和中心对齐模 式。

(1)PWM边沿对齐模式

当 TIMx_CR1 寄存器中的 DIR 位为低时执行递增计数,计数器CNT从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始 计数并生成计数器上溢事件。 以 PWM 模式 1 为例。只要TIMx_CNT < TIMx_CCRx, PWM 参考信号 OCxREF 便为有效的高电平,否则为无效的低电平。如果 TIMx_CCRx 中 的比较值小于自动重载值(TIMx_ARR 中),则 OCxREF 保持为“ 1”。 如果比较值为 0, 则 OCxREF 保持为“ 0”。
在这里插入图片描述
  当 TIMx_CR1 寄存器中的 DIR 位为高时执行递减计数,计数器CNT从 自动重载值(TIMx_ARR 寄存器的内容)递减计数到0,然后重新从 TIMx_ARR值开始计数并生成计数器下溢事件。 以 PWM 模式 1 为例。只要TIMx_CNT >TIMx_CCRx, PWM 参考信号 OCxREF 便为无效的低电平,否则为有效的高电平。如果 TIMx_CCRx 中 的比较值大于自动重载值(TIMx_ARR 中),则 OCxREF 保持为“ 1”。 此模式下不能产生0%的PWM波形。

(2)PWM中心对齐模式

在中心对齐模式下,计数器 CNT 是工作做递增/递减模式下。开始的 时候, 计数器CNT 从 0 开始计数到自动重载值减 1(ARR-1),生成计数 器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事 件。之后从 0 开始重新计数。
在这里插入图片描述
  我们以ARR=8,CCRx=4为例进行介绍。第一阶段计数器CNT工作在递增 计数方式,从0开始计数,当TIMx_CNT < TIMx_CCRx时,PWM 参考信号 OCxREF为高电平,当TIMx_CNT >= TIMx_CCRx时,PWM 参考信号 OCxREF 为低电平。第二阶段计数器CNT工作在递减计数方式,从ARR开始递减计 数,当TIMx_CNT > TIMx_CCRx时,PWM 参考信号 OCxREF为低电平,当 TIMx_CNT <= TIMx_CCRx时,PWM 参考信号 OCxREF为高电平。

代码实现

在野火的官网中我们能够找到关于TIM定时器的代码,在里面就有PWM的代码,我们只需要在Keil5中打开就可以了。
编译之后就可以在Keil中进行调试 了。
在这里插入图片描述
进入Keil中按照上面选择在线调试,这样就不需要硬件也能进行调试了。
设置之后按照下面的选择,就可以进入调试阶段了。
在这里插入图片描述
然后再点击全速运行,之后点击×之后就会出现波形了。
在这里插入图片描述
波形如下
在这里插入图片描述
在主函数中,这段代码可以改变输出波形的频率,我们改变频率之后就会改变输出的周期,这样输出的波形的占空比也会改变。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F103是一种高性能32位微控制器,具有丰富的外设和强大的计算能力。要实现互补PWM输出,可以通过配置STM32F103的定时器和通道来完成。 首先,选择一个定时器作为PWM输出的时基。比如,选择定时器1(TIM1)。 然后,配置定时器1的工作模式为PWM模式,将其通道1和通道2设置为互补模式。 在这个设置中,通道1产生一个PWM波形,通道2产生一个与通道1相位相反的PWM波形,在输出上形成互补的PWM波。 配置定时器1的频率和周期,可以通过设置ARR(自动重载寄存器)的值来实现。通常情况下,ARR的值决定PWM的频率,而分辨率则取决于PSC(预分频系数)的设置。更具体的数值可以根据需要进行调整。 接下来,设置通道1和通道2的占空比。可以通过改变CCR1(捕获比较寄存器1)和CCR2(捕获比较寄存器2)的值来调整。CCR1和CCR2的范围在0到ARR之间,分别代表着PWM波形的占空比。 最后,使能定时器1以开始输出PWM波形。 通过上述步骤的设置,即可实现STM32F103输出互补的PWM波形。这种方式可以应用于很多领域,比如直流电机驱动、LED驱动等。具体的应用场景可以根据需要进行调整和优化。 ### 回答2: stm32f103是一款32位的ARM Cortex-M3核心微控制器,具有丰富的外设和强大的计算能力。要输出互补PWM波,可以通过使用定时器来实现。 首先,选择一个合适的定时器和通道来输出PWM波。stm32f103有多个定时器可供选择,例如TIM1、TIM2等。选择其中一个定时器,并判断它是否具有互补PWM功能。 接下来,配置定时器的工作模式。使用PWM输出模式,并设置计数器自动重装载值。这样定时器将会周期性地从0开始计数。 然后,设置定时器的预分频因子和计数器的重装载值,以确定PWM波的频率和占空比。预分频因子用来将外部时钟信号分频,计数器的重装载值决定了PWM波的周期。 设置定时器的通道为PWM输出模式。通过设置通道的比较值和占空比来产生PWM波形。通常需要两个通道用于产生互补的PWM波。 将两个通道设置为互补模式,使得它们的输出相位相反。 最后,启动定时器并使能相应的通道输出。这样,stm32f103就会输出互补的PWM波。 需要注意的是,在配置和使用定时器的过程中,还需要注意时钟的配置、GPIO引脚的初始化等相关设置,以确保PWM波的输出正常工作。 以上是关于stm32f103输出互补PWM波的简要步骤,具体实现依赖于具体的需求和使用的库函数。 ### 回答3: STM32F103是一款常用的STM32单片机系列中的一员,它提供了多个通用定时器,可以用于输出互补PWM波。 互补PWM波是一种特殊的PWM波形,它由两个互补的信号组成,其特点是一个信号占空比逐渐增加,而另一个信号占空比逐渐减小。 在STM32F103中,我们可以通过配置定时器的工作模式和相关寄存器来实现互补PWM波的输出。下面是一个简单的实现步骤: 1. 配置定时器:选择一个合适的定时器(如TIM1、TIM2等),根据需求配置该定时器的工作模式和时钟源。 2. 配置通道:选择一个通道作为互补PWM输出的通道,一般选择定时器的通道1或通道2。配置通道的工作模式和输出极性,使其能够输出PWM波。 3. 配置PWM输出:配置定时器的ARR寄存器和CCR寄存器,分别设置周期和占空比。对于互补PWM波,可以通过调整两个通道的CCR寄存器的值来实现占空比的增减。 4. 使能定时器:使能定时器和相关通道的输出,开始生成互补PWM波。 通过以上步骤的配置,就可以利用STM32F103的定时器输出互补PWM波。在实际应用中,可以根据需求调整定时器的工作模式、时钟源和各个寄存器的值,实现不同频率和占空比的互补PWM输出

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值