附上STM32F407 定时器四路PWM代码

时间:2022-04-20 23:30:49
/********CYSY_Kiti1013***********/

void TIM4_PWM_Init(u16 arr,u16 psc)//PD12 PD13 PD14 PD15
{
RCC->APB1ENR|=1<<2;//使能TIM4
RCC->AHB1ENR|=1<<3;//使能GPIOD
GPIO_Set(GPIOD,PIN12,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_Set(GPIOD,PIN13,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_Set(GPIOD,PIN14,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_Set(GPIOD,PIN15,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_AF_Set(GPIOD,12,2);
GPIO_AF_Set(GPIOD,13,2);
GPIO_AF_Set(GPIOD,14,2);
GPIO_AF_Set(GPIOD,15,2);
TIM4->ARR=arr;
TIM4->PSC=psc;
TIM4->CCMR1|=6<<4;//PWM1 mode
TIM4->CCMR1|=6<<12;
TIM4->CCMR1|=1<<3;//CH1预装载使能
TIM4->CCMR1|=1<<10;//CH2
TIM4->CCMR2|=1<<3;//CH3
TIM4->CCMR2|=1<<10;//CH4
TIM4->CCMR2|=6<<4;
TIM4->CCMR2|=6<<12;
TIM4->CCER|=0<<1;//OC1 高电平有效
TIM4->CCER|=1<<0;//OC1使能
TIM4->CCER|=1<<4;//OC2
TIM4->CCER|=0<<5;//OC2
TIM4->CCER|=1<<8;//OC3
TIM4->CCER|=0<<9;//OC3
TIM4->CCER|=1<<12;//OC4
TIM4->CCER|=0<<13;//OC4
TIM4->CR1|=1<<7;//ARPE使能
TIM4->CR1|=1<<0;//使能定时器4

}