STM32F4寄存器初始化:PWM输出

    技术2024-12-22  15

    static void TIM4_Init(void) //普通定时函数 { TIM4->ARR=1000-1; //设定计数器自动重装值 TIM4->PSC=168-1; //2000000 //预分频器 TIM4->CCMR1|=6<<4; //CH1 PWM1模式 TIM4->CCMR1|=6<<12; //CH2 PWM1模式 TIM4->CCMR2|=6<<4; //CH3 PWM1模式 TIM4->CCMR2|=6<<12; //CH4 PWM1模式 TIM4->CCER|=1<<0; //OC1 输出使能 TIM4->CCER|=1<<4; //OC2 输出使能 TIM4->CCER|=1<<8; //OC3 输出使能 TIM4->CCER|=1<<12; //OC4 输出使能 TIM4->CR1|=1<<7; //ARPE使能 TIM4->CR1|=1<<0; //使能定时器4 } static void TIM8_Init(void) //普通定时函数 { TIM8->ARR= 1023; //2000000 //设定计数器自动重装值 TIM8->PSC= (SystemCoreClock/880000)-1; //预分频器 TIM8->CCMR1|=7<<4; //CH1 PWM2模式 TIM8->CCMR1|=7<<12; //CH2 PWM2模式 TIM8->CCMR2|=7<<4; //CH3 PWM2模式 TIM8->CCMR2|=7<<12; //CH4 PWM2模式 TIM8->CCER|=1<<0; //OC1 输出使能 TIM8->CCER|=1<<4; //OC2 输出使能 TIM8->CCER|=1<<8; //OC3 输出使能 TIM8->CCER|=1<<12; //OC4 输出使能 TIM8->CR1|=1<<7; //ARPE使能 TIM8->CR1|=1<<0; //使能定时器8 TIM8->BDTR|=1<<15; //TIM1和TIM8高级定时器需配置 } RCC->APB1ENR|=1<<0; //TIM2时钟使能 RCC->APB1ENR|=1<<1; //TIM3时钟使能 RCC->APB1ENR|=1<<2; //TIM4时钟使能 RCC->APB1ENR|=1<<3; //TIM5时钟使能 RCC->APB1ENR|=1<<5; //TIM7时钟使能 RCC->APB1ENR|=1<<6; //TIM12时钟使能 RCC->APB2ENR|=1<<0; //TIM1时钟使能 RCC->APB2ENR|=1<<1; //TIM8时钟使能 RCC->APB2ENR|=1<<16; //TIM9时钟使能 //主电机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;
    Processed: 0.010, SQL: 9