void PWM_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<1; //TIM3时钟使能
GPIOA->CRH&=0XFFFFFFF0;//PA8输出
GPIOA->CRH|=0X00000004;//浮空输入
GPIOA->CRL&=0X00FFFFFF;//PA6、7输出
GPIOA->CRL|=0XBB000000;//复用功能输出
GPIOA->ODR|=1<<6;//PA6上拉 CH1
GPIOA->ODR|=1<<7;//PA7上拉 CH2
GPIOB->CRL&=0XFFFFFF00;//PB0、1输出
GPIOB->CRL|=0X000000BB;//复用功能输出
GPIOB->ODR|=1<<0;//PB0上拉 CH3
GPIOB->ODR|=1<<1;//PB1上拉 CH4
TIM3->ARR=arr;//设定计数器自动重装值
TIM3-> SC=psc;//预分频器不分频
TIM3->CCMR1|=7<<4; //CH1 PWM2模式
TIM3->CCMR1|=7<<12; //CH2 PWM2模式
TIM3->CCMR1|=1<<3; //CH1预装载使能
TIM3->CCMR1|=1<<11; //CH2预装载使能
TIM3->CCMR2|=7<<4; //CH3 PWM2模式
TIM3->CCMR2|=7<<12; //CH4 PWM2模式
TIM3->CCMR2|=1<<3; //CH3预装载使能
TIM3->CCMR2|=1<<11; //CH4预装载使能
TIM3->CCER|=1<<0; //OC1 输出使能
TIM3->CCER|=1<<4; //OC2 输出使能
TIM3->CCER|=1<<8; //OC3 输出使能
TIM3->CCER|=1<<12; //OC4 输出使能
TIM3->CR1=0x0080; //ARPE使能
TIM3->CR1|=0x01; //使能定时器3
}
timer.h 中只有 #define LED0_PWM_VAL TIM3->CCR1 和 TIM3->CCR2 有输出 TIM3->CCR3 、TIM3->CCR14 没输出 为啥?
|