stm32定时器输出PWM流程讲解

0.在讲流程之前,先来看一下PWM的原理。
PWM是对IO口的高低电平的占空比进行不同比例的分配。
先假定设定的IO口为A0,stm32在任意时刻会将CCR1(通道1的比较/捕获寄存器)与CNT的值进行比较,比较出不同的大小会向PA0输出不同的电平,相关设置在CCMR寄存器中设置。


1.使能TIMx与相应PORT的时钟
EN TIMx:RCC->APB1ENR |= 1 << n;
EN PORT : RCC->APB2ENR |= 1 << m;
(注:关于与timer对应的IO口,在相应的数据手册中可以查到)

2.设置IO口输出模式
GPIO->CRL &= |= (复用推挽输出)
(注:有时候根据需要会开启重映射,设置AFIO->MAPR重映射TIMx)

3.设定计数器自动重装值
TIMx->ARR = arr;

4.设定预分频器分频值
TIMx->PSC = psc;

5.设置PWM模式(CCMR1控制CH1与2,CCMR2控制CH3与4,相关详细说明见参考手册282章节)
TIMx->CCMR1 |= 7 << n;
(OCxM位段)110/111都是PWM输出,极性不同
其实还需要设置CCxS位段,是设置CHx是输出还是输入,由于复位值是00,即输出模式,所以不用设置。

6.预装载使能
在这里插入图片描述
TIMx->CCMR1 |= 1 << n;

7.OCx通道输出使能
TIMx->CCER |= 1 << m;
在这里插入图片描述

8.ARPE使能(自动重装载预装载允许位)
TIMx->CR1 |= 0x0080

9.使能定时器x
TIMx->CR1 |= 0x01


可以在任何地方随时修改TIMx->CCR1的值,用来修改占空比假如ARR设置10,那么CCR1为5时,占空比就是50%

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值