
#include "pwm_output.h" void TIM3_PWM_Init(void) { TIM3_GPIO_Config(); TIM3_Mode_Config(); } static void TIM3_GPIO_Config() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1; GPIO_Init(GPIOB,&GPIO_InitStructure); } static void TIM3_Mode_Config() { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; u16 CCR1_Val=750; u16 CCR2_Val=500; u16 CCR3_Val=250; u16 CCR4_Val=100; TIM_DeInit(TIM3); TIM_TimeBaseInitStructure.TIM_ClockDivision =TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode =TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period =999; TIM_TimeBaseInitStructure.TIM_Prescaler =0; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure); TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse =CCR1_Val; TIM_OC1Init(TIM3,&TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse =CCR2_Val; TIM_OC2Init(TIM3,&TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse =CCR3_Val; TIM_OC3Init(TIM3,&TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse =CCR4_Val; TIM_OC4Init(TIM3,&TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_Cmd(TIM3,ENABLE); } |
编译无措 |