贴块 STM32 用高级定时器 T1 生成CH1 CH4 的PWM 的初始化程序,大家小走弯路

2019-08-14 19:22发布

贴块 STM32 用高级定时器 T1 生成CH1  CH4  的PWM 的初始化程序,大家小走弯路

 RCC->APB2ENR|=1<<11;       //TIM1时钟使能   
//////////////////////////////////////// 
 GPIOA->CRH&=0XFFFF0FF0;//PA8 11 输出
 GPIOA->CRH|=0X0000B00B;//复用功能输出   
 
////////////////////////////////////////
 TIM1->BDTR |=0xC0;   //ARPE使能
 TIM1->ARR=arr;//设定计数器自动重装值
 TIM1->SC=psc;//预分频器不分频
 
 TIM1->CCMR1|=6<<4;  //CH2 PWM2模式 CH1/2 
 TIM1->CCMR1|=1<<3; //CH2预装载使能  TIM1->CCMR2|=6<<12;  //CH2 PWM2模式 CH3/4  
 TIM1->CCMR2|=1<<11; //CH2预装载使能    TIM1->CCER|=1<<0;   //OC2 输出使能
 TIM1->CCER|=1<<12;   //OC2 输出使能
 TIM1->CR1 |=0x80;   //ARPE使能
 TIM1->CR1|=0x01;    //使能定时器1  TIM1->BDTR|=0x8000;  //使能定时器1输出



T1  和其它的定时器不一样,T2  T3  T4 都不需要最后这一句,  而调T1时,没有最后的这个BDTR,死活不出PWM。感谢  正点原子的指导。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
wanghy0119
2019-08-15 05:56

 TIM1->CCMR1|=6<<4;  //CH2 WM2模式 CH1/2  
 TIM1->CCMR1|=1<<3; //CH2预装载使能
 
 TIM1->CCMR2|=6<<12;  //CH2 WM2模式 CH3/4   
 TIM1->CCMR2|=1<<11; //CH2预装载使能
这里是不是应该改成这样子

 TIM1->CCMR1|=7<<4;  //CH2 WM2模式 CH1  
 TIM1->CCMR1|=1<<3; //CH2预装载使能

 TIM1->CCMR1|=7<<12;  //CH2 WM2模式 CH2 
 TIM1->CCMR1|=1<<11; //CH2预装载使能
 
 TIM1->CCMR2|=7<<4;  //CH2 WM2模式 CH3   
 TIM1->CCMR2|=1<<3; //CH2预装载使能

 TIM1->CCMR2|=7<<12;  //CH2 WM2模式 CH3   
 TIM1->CCMR2|=1<<11; //CH2预装载使能

一周热门 更多>