STM32通用定时器PWM输出

PWM输出工作过程在这里插入图片描述

比如,采取自动重装载向上计数,从0一直加到ARR预设值,然后再与CCRx进行比较,当计数大于CCRx的值,可通过代码配置,输出高电平或者低电平,这样就能输出一个PWM波,CCRx的x表示定时器通道。CCRx决定占空比,ARR决定周期。在这里插入图片描述
通道1为例
CCR1:捕获比较寄存器(x=1,2,3,4),设置比较值
CCMR1:OC1M[2:0]位:对于PWM方式下,用于设置PWM模式1或者PWM模式2
CCER:CC1P位:输入/捕获1输出极性。0:高电平有效;1:低电平有效。
CCER:CC1P位:输入/捕获1输出使能。0:关闭;1:打开。在这里插入图片描述
也就是说,PWM1:不管向上/向下计数,当计数数值小于CCRx的设定值,通道为有效电平;PWM2:不管向上/向下计数,当计数数值大于CCRx的设定值,通道为有效电平

配置步骤

1.使能定时器3和相关IO口时钟。

使能定时器3时钟: RCC APB1PeriphClockCmd();

使能GPIOB时钟: RCC APB2PeriphClockCmd();

2.初始化IO口为复用功能输出。

GPIO_ InitStructure.GPlO Mode=GPIO Mode AF PP;

3.这里我们是要把PB0和PB1用作定时器的PWM输出引脚,所以需要开启AFIO时钟。

RCC_ APB2PeriphClockCmd(RCC APB2Periph AFIO,ENABLE);

4.初始化定时器: ARR,PSC等: TIM TimeBaselnit0;

5.初始化输出比较参数: TIM_ OCxInit();

6.使能预装载寄存器: TIM OCxPreloadConfig(TIM3, TIM OCPreload Enable);

7.使能定时器。TIM Cmd();

8.不断改变比较值CCRx,达到不同的占空比效果:TIM SetCompare20;

代码配置

以TIM3的CH3和CH4通道为例(需要沿用定时器的配置)

void TIM3_PWM_Init(u16 arr,u16 psc)
{
   
 TIM_OCInitTypeDef TIM_OCInitStrue;
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值