贴块 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条回答
正点原子
1楼-- · 2019-08-14 19:56
谢谢分享.
沙盘月华
2楼-- · 2019-08-14 22:23
谢谢楼主!
沙盘月华
3楼-- · 2019-08-14 22:23
楼主,我用你的程序怎么调不出来啊?求指导!
lele182
4楼-- · 2019-08-15 00:36
 精彩回答 2  元偷偷看……
liushuifong
5楼-- · 2019-08-15 01:27

确实不行   仿真也不能输出波形,楼主用的是比较输出波形吧   修改如下即可
void Tim1_init(u16 arr,u16 psc)
{
     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->CCR1=3000; 
        TIM1->CCR4=4000;
   
     TIM1->CR1 |=0x80;   //ARPE使能
     TIM1->CR1|=0x01;    //使能定时器1
   
     TIM1->BDTR|=0x8000;  //使能定时器1输出
}


 

wanghy0119
6楼-- · 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预装载使能

一周热门 更多>