我用TIM5_CH1打算在PA0上输出PWM,如下TIM5_PWM_Init(u16 arr,u16 psc)是我参考例程TIM3_PWM_Init(u16 arr,u16 psc)编写的PWM初始化程序,TIM3可以输出PWM,但是我编写的TIM5输出脚我用示波器查看始终是高电平一条直线,没有PWM输出,我将完整的工程文件添加到附件中了,麻烦各位帮我看看是什么问题,谢谢!
//TIM3 PWM部分初始化
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM3_PWM_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<1; //TIM3时钟使能
RCC->APB2ENR|=1<<3; //使能PORTB时钟
// RCC->APB2ENR|=1<<6; //使能PORTE时钟
// GPIOE->CRL&=0XFF0FFFFF; //PE5输出
// GPIOE->CRL|=0X00B00000; //复用功能输出
GPIOB->CRL&=0XFF0FFFFF; //PB5输出
GPIOB->CRL|=0X00B00000; //复用功能输出
RCC->APB2ENR|=1<<0; //开启辅助时钟
AFIO->MAPR&=0XFFFFF3FF; //清除MAPR的[11:10]
AFIO->MAPR|=1<<11; //部分重映像,TIM3_CH2->PB5
TIM3->ARR=arr; //设定计数器自动重装值
TIM3->PSC=psc; //预分频器不分频
TIM3->CCMR1|=7<<12; //CH2 PWM2模式
TIM3->CCMR1|=1<<11; //CH2预装载使能
TIM3->CCER|=1<<4; //OC2 输出使能
TIM3->CR1=0x0080; //ARPE使能
TIM3->CR1|=0x01; //使能定时器3
}
/*******************设置TIM5_CH1 PWM输出******************************/
void TIM5_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<3; //TIM5时钟使能
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XFFFFFFF0; //PA0输出,清除之前设置
GPIOA->CRL|=0X0000000B; //复用功能输出
RCC->APB2ENR|=1<<0; //开启辅助时钟
TIM5->ARR=arr; //设定计数器自动重装值
TIM5->PSC=psc; //预分频器不分频
// TIM5->CCMR1&=~(3<<0); //CC1通道被配置为输出;
TIM5->CCMR1|=7<<4; //CH1 PWM2模式
TIM5->CCMR1|=1<<3; //CH1预装载使能
TIM5->CCER|=1<<0; //OC1 输出使能
TIM5->CR1=0x0080; //ARPE使能
TIM5->CR1|=0x01; //使能定时器5
}
一周热门 更多>