STM32
直播中

张华

7年用户 1427经验值
私信 关注
[问答]

stm32定时器输出PWM的流程是怎样的

PWM的原理是什么?
STM32定时器输出PWM的流程是怎样的?

回帖(1)

李耘蝶

2021-11-17 09:25:56
  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%。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分