将定时器3的2通道改为定时器1的1通道输出怎么不行呢?以下是修改前后的代码~~
修改前:
//通过改变TIM3->CCR2的值来改变占空比,从而控制LED0的亮度
#define LED0_PWM_VAL TIM3->CCR2
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
/*void PWM_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<1; //TIM3时钟使能
GPIOA->CRH&=0XFFFFFFF0;//PA8输出
GPIOA->CRH|=0X00000004;//浮空输入
GPIOA->CRL&=0X0FFFFFFF;//PA7输出
GPIOA->CRL|=0XB0000000;//复用功能输出
GPIOA->ODR|=1<<7;//PA7上拉
TIM3->ARR=arr;//设定计数器自动重装值
TIM3-> SC=psc;//预分频器不分频
TIM3->CCMR1|=7<<12; //CH2 PWM2模式
TIM3->CCMR1|=1<<11; //CH2预装载使能
TIM3->CCER|=1<<4; //OC2 输出使能
TIM3->CR1=0x8000; //ARPE使能
TIM3->CR1|=0x01; //使能定时器3
}*/
修改后:
//通过改变TIM1->CCR1的值来改变占空比,从而控制LED0的亮度
#define LED0_PWM_VAL TIM1->CCR1
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void PWM_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB2ENR|=1<<11; //TIM1时钟使能
GPIOA->CRH&=0XFFFFFFF0;//PA8输出
GPIOA->CRH|=0X0000000B;//复用功能输出
GPIOA->ODR|=1<<8;//PA8上拉
TIM1->ARR=arr;//设定计数器自动重装值
TIM1-> SC=psc;//预分频器不分频
TIM1->CCMR1|=7<<4; //CH1 PWM2模式
TIM1->CCMR1|=1<<3; //CH1预装载使能
TIM1->CCER|=1<<0; //OC1 输出使能
TIM1->CR1=0x8000; //ARPE使能
TIM1->CR1|=0x01; //使能定时器1
} |