//此部分需手动修改IO口设置
RCC->APB2ENR|=1<<5;
RCC->APB2ENR|=1<<0;// 打开辅助功能时钟
RCC->APB2ENR|=1<<11;// 代开定时器1时钟 实际上就开定时器1 的时钟就行了
RCC->APB2ENR|=1<<6; //使能PORTe时钟
AFIO->MAPR|=3<<6; //TIM1完全映射
GPIOE->CRH&=0XF00F0F0F;//Pe9,11,13,14输出
GPIOE->CRH|=0X0BB0B0B0;//复用输出
TIM1->ARR=arr;//设定计数器自动重装值
TIM1->PSC=psc;//预分频器不分频
TIM1->CCMR1|=6<<12; //CH2 PWM2模式
TIM1->CCMR1|=1<<11; //CH2预装载使能
TIM1->CCMR1|=6<<4; //CH1 PWM2模式
TIM1->CCMR1|=1<<3; //CH1预装载使能
TIM1->CCMR2|=6<<12; //CH4 PWM2模式
TIM1->CCMR2|=1<<11; //CH4
TIM1->CCMR2|=6<<4; //CH3 PWM2模式
TIM1->CCMR2|=1<<3; //CH3 PWM2模式
TIM1->CCER|=1<<4; //OC2 输出使能 开关位
TIM1->CCER|=1<<0; //OC1 输出使能 开关位
TIM1->CCER|=1<<8; //OC3 输出使能 开关位
TIM1->CCER|=1<<12; //OC4 输出使能 开关位
TIM1->BDTR|=1<<15;
TIM1->CR1|=1<<7; // APRE使能
TIM1->DIER|=1<<0; //允许更新中断
TIM1->DIER|=1<<6; //允许触发中断
TIM1->DIER|=1<<4; //允许触发中断
MY_NVIC_Init(0,1,TIM1_UP_IRQChannel,2);//抢占0,子优先级2,组2
MY_NVIC_Init(0,2,TIM1_CC_IRQChannel,2);//抢占0,子优先级2,组2
PWM0_VAL=0; //设置PWM位为10khz 占空比50%
PWM1_VAL=0;
PWM2_VAL=0;
PWM3_VAL=0;
|