1 static void TIM4_Init(void) //普通定时函数 2 { 3 TIM4->ARR=1023; //设定计数器自动重装值 4 TIM4->PSC=(SystemCoreClock/880000)-1; //2000000 //预分频器 5 6 TIM4->CCMR1|=7<<4; //CH1 PWM2模式 7 TIM4->CCMR1|=7<<12; //CH2 PWM2模式 8 TIM4->CCMR2|=7<<4; //CH3 PWM2模式 9 TIM4->CCMR2|=7<<12; //CH4 PWM2模式 10 11 TIM4->CCER|=1<<0; //OC1 输出使能 12 TIM4->CCER|=1<<4; //OC2 输出使能 13 TIM4->CCER|=1<<8; //OC3 输出使能 14 TIM4->CCER|=1<<12; //OC4 输出使能 15 16 TIM4->CR1|=1<<7; //ARPE使能 17 TIM4->CR1|=1<<0; //使能定时器4 18 19 } 20 static void TIM8_Init(void) //普通定时函数 21 { 22 TIM8->ARR= 1023; //2000000 //设定计数器自动重装值 23 TIM8->PSC= (SystemCoreClock/880000)-1; //预分频器 24 25 TIM8->CCMR1|=7<<4; //CH1 PWM2模式 26 TIM8->CCMR1|=7<<12; //CH2 PWM2模式 27 TIM8->CCMR2|=7<<4; //CH3 PWM2模式 28 TIM8->CCMR2|=7<<12; //CH4 PWM2模式 29 30 TIM8->CCER|=1<<0; //OC1 输出使能 31 TIM8->CCER|=1<<4; //OC2 输出使能 32 TIM8->CCER|=1<<8; //OC3 输出使能 33 TIM8->CCER|=1<<12; //OC4 输出使能 34 35 TIM8->CR1|=1<<7; //ARPE使能 36 TIM8->CR1|=1<<0; //使能定时器8 37 38 TIM8->BDTR|=1<<15; //TIM1和TIM8高级定时器需配置 39 }
//主电机PWM输出 ************ GPIO_AF_Set(GPIOD,12,2); //PD12,AF2 定时器4 GPIO_AF_Set(GPIOD,13,2); //PD13,AF2 GPIO_AF_Set(GPIOD,14,2); //PD14,AF2 GPIO_AF_Set(GPIOD,15,2); //PD15,AF2 GPIO_Set(GPIOD,PIN12|PIN13|PIN14|PIN15,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_NONE);//复用功能 GPIO_AF_Set(GPIOC,6,3); //PC6,AF3 定时器8 GPIO_AF_Set(GPIOC,7,3); //PD7,AF3 GPIO_AF_Set(GPIOC,8,3); //PD8,AF3 GPIO_AF_Set(GPIOC,9,3); //PD9,AF3 GPIO_Set(GPIOC,PIN6|PIN7|PIN8|PIN9,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_NONE);//复用功能
TIM4->CCR1 = 0;