/******************************TIM2的通道1使用單脈沖模式**TIM3使用門控模式用來輸出PWM******************************///TIM2per:重裝值//Compare1:比較捕獲1的預裝載值voidMotor_Init(u16TIM2per,u16TIM3per,u16TIM3Compare1){TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStruct;TIM_OCInitTypeDefTIM_OCInitStruct;GPIO_InitTypeDefGPIO_InitStruct;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能定時器2的時鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能定時器3的時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能復用IO時鐘http://write.blog.csdn.net/postedit
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;//復用推挽輸出GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_6;//PA0GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);//TIM2工作在單脈沖下TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;//沒有時鐘分割TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上計數(shù)模式TIM_TimeBaseInitStruct.TIM_Prescaler=7200;//預分頻值,每100us計數(shù)一次TIM_TimeBaseInitStruct.TIM_Period=TIM2per;//重裝值TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);TIM_SelectOnePulseMode(TIM2,TIM_OPMode_Single);//設置TIM2在單脈沖模式,且是單一的脈沖,在下一個更新事件停止TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);//使能定時器2的通道1預裝載寄存器TIM_SelectOutputTrigger(TIM2,TIM_TRGOSource_OC1Ref);TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;//在向上計數(shù)時,一旦TIMx_CNT