STM32 输出 PWM

定时器8属于高级定时器,只存在于大容量产品的103系列中,定时器8输出PWM波形时与通用定时器2、3、4、5不同,必须同时开启主输出(TIM8->BDTR|=0x8000;)才能产生PWM波,其配置如下:

/*********************************************
    函数名称:void TIM4_PWM_Init(u16 arr,u16 psc)
    功        能:通用TIM4 CH1(PB6) CH2(PB7)PWM输出初始化
    入        参:arr:自动重装值。
                        psc:时钟预分频数
    返        回:无
【说明】Frq = 72Mhz / ( psc + 1 ) / ( arr + 1 )
*********************************************/
void TIM4_PWM_Init(u16 arr,u16 psc)
{
    RCC->APB1ENR|=1<<2;         //TIM4时钟使能    
    RCC->APB2ENR|=1<<3;        //使能PORTB时钟    
           
    GPIOB->CRL&=0X00FFFFFF;    //PB6 7 输出
    GPIOB->CRL|=0XBB000000;    //复用功能输出       
 
    TIM4->ARR=arr;                //设定计数器自动重装值 
    TIM4->PSC=psc;                //预分频器分频设置
    
    TIM4->CCMR1|=6<<4;      //CH1 PWM1模式
                                                //6: PWM1模式, 正脉冲
                                                //7: PWM2模式, 负脉冲
    TIM4->CCMR1|=1<<3;         //CH1 预装载使能       
    TIM4->CCER|=1<<0;       //OC1 输出使能       
    
    TIM4->CCMR1|=6<<12;      //CH2 PWM1模式
    TIM4->CCMR1|=1<<11;     //CH2 预装载使能       
    TIM4->CCER|=1<<4;       //OC2 输出使能

    TIM4->CR1=0x0080;       //ARPE使能 
    TIM4->CR1|=0x01;        //使能定时器4
}
/*********************************************
    函数名称:TIM8_PWM_Init
    功        能:通用TIM8 CH1(PC6) CH2(PC7)PWM输出初始化
    入        参:arr:自动重装值。
                        psc:时钟预分频数
    返        回:无
【说明】Frq = 72Mhz / ( psc + 1 ) / ( arr + 1 )
*********************************************/
void TIM8_PWM_Init(u16 arr,u16 psc)
{
    RCC->APB2ENR|=1<<13;         //TIM8时钟使能
    RCC->APB2ENR|=1<<4;        //使能PORTC时钟    
           
    GPIOC->CRL&=0X00FFFFFF;    //PC6 7 输出
    GPIOC->CRL|=0XBB000000;    //复用功能输出       
 
    TIM8->ARR=arr;                //设定计数器自动重装值 
    TIM8->PSC=psc;                //预分频器分频设置
    
    TIM8->CCMR1|=6<<4;      //CH1 PWM1模式
                                                //6: PWM1模式, 正脉冲
                                                //7: PWM2模式, 负脉冲
    TIM8->CCMR1|=1<<3;         //CH1 预装载使能       
    TIM8->CCER|=1<<0;       //OC1 输出使能       
    
    TIM8->CCMR1|=6<<12;      //CH2 PWM1模式
    TIM8->CCMR1|=1<<11;     //CH2 预装载使能       
    TIM8->CCER|=1<<4;       //OC2 输出使能

    TIM8->CR1=0x0080;       //ARPE使能
    TIM8->BDTR|=0x8000;        //主输出使能
    TIM8->CR1|=0x01;        //使能定时器8
}

发布了20 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/pan337520/article/details/80570241