如何运用STM32 的一个通用定时器产生频率可调的PWM

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何运用STM32 的一个通用定时器产生频率可调的PWM相关的知识,希望对你有一定的参考价值。

参考技术A   void TIM2_PWM_OUT_Conf(void)
  
  RCC->APB1ENR |=1<<0; //TIM2 Clock
  RCC->APB2ENR |=1<<2; //GPA Clock
  RCC->APB2ENR |=1<<0; //AFIO Clock
  RCC->APB2ENR |=1<<3; //GPB Clock
  RCC->APB1ENR |=7<<0; //TIM2 TIM3 TIM4 Clock
  GPIOA->CRL &=0xFFFF0000; //
  GPIOA->CRL |=0x0000BBBB; //AF-Out

  TIM2->CR1 |=1<<4; //Count Down
  TIM2->CCMR1 |=6<<4; //OC1M:PWM1
  TIM2->CCMR1 |=6<<12; //OC2M:PWM1
  TIM2->CCMR2 |=6<<4; //OC3M:PWM1
  TIM2->CCMR2 |=6<<12; //OC4M:PWM1

  // TIM2->CCMR1 |=1<<2;
  // TIM2->CCMR2 |=1<<10;
  // TIM2->CCMR1 |=1<<2;
  // TIM2->CCMR2 |=1<<10;

  TIM2->CCER |=1<<0; //CC1E ENABLE
  TIM2->CCER |=1<<4; //CC2E ENABLE
  TIM2->CCER |=1<<8; //CC3E ENABLE
  TIM2->CCER |=1<<12; //CC4E ENABLE

  TIM2->PSC =719; //720-1 PSC
  TIM2->ARR =PWM_PERIOD; //20ms
  TIM2->CR1 |=1<<0; //ENABLE

  
  //CCR 寄存器修改占空比本回答被提问者采纳
参考技术B stm32f103系列的芯片每个定时器(基本定时器tim6和tim7除外)都有4个通道,每个通道都能产生4路pwm,1路和4路区别不大,你把1路的初始化部分的代码在通道代码的基础上复制另外几个通道的初始化函数就可以了,其余的没有任何区别。

以上是关于如何运用STM32 的一个通用定时器产生频率可调的PWM的主要内容,如果未能解决你的问题,请参考以下文章

stm32通用定时器产生pwm时 模式1和模式2有啥区别

怎么解决用stm32 发射2m方波,求大神!!!!!

stm32输出的pwm有啥用

如何用stm32的定时器产生一路pwm输出,周期为500hz,占空比0%~100%可调,完整c语言程序。

stm32怎样实现不同定时器产生不同频率的PWM波?

STM32定时器输出PWM频率和步进电机控制速度计算