int main(void)
{
RCC_APB1PeriphClockCmd ( RCC_APB1Periph_TIM3,ENABLE); //?ò??TIM3???±??
RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOA| RCC_APB2Periph_AFIO,ENABLE ) ;// ?ò???±??
TIM3_PWM_Init();
while(1)
{
;
}
}
#include "PWM.H"
//------------------------------
//
//TIM3??PWM???????¨??????
//------------------------------------------------------------------
void TIM_Mode_Config(void )
{ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
u16 CCR1_Val=500;u16 CCR2_Val=375;u16 CCR3_Val=250;u16 CCR4_Val=125;
TIM_TimeBaseStructure.TIM_Period=999;//?¨?±?÷??0??????999?????????¨?±????
TIM_TimeBaseStructure.TIM_Prescaler=0;//?è???¤·????????¤·??? ????36M ?ò???¨?±?÷3????1
TIM_TimeBaseStructure.TIM_ClockDivision=0;//?è???±??·????????? ??·???
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //?ò??????????
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //??????
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//PWM???????¨??//??????PWM1????
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse=CCR1_Val;//?è????±??????±?????÷?????????????±??????·??ú??±?
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; //?±?????÷????????CCR1_Val?±????????
TIM_OC1Init(TIM3,&TIM_OCInitStructure);//?????¨??1
TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//?????¨??2
TIM_OCInitStructure.TIM_Pulse=CCR2_Val; //?è???¨??2????????±???
TIM_OC2Init(TIM3,&TIM_OCInitStructure); //?????¨??2
TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//?????¨??3
TIM_OCInitStructure.TIM_Pulse=CCR3_Val; //?è???¨??3????????±???
TIM_OC3Init(TIM3,&TIM_OCInitStructure);//?????¨??3
TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//?????¨??4
TIM_OCInitStructure.TIM_Pulse=CCR4_Val; //?è???¨??4????????±???
TIM_OC4Init(TIM3,&TIM_OCInitStructure);//?????¨??4
TIM_OC4PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3,ENABLE);
TIM_Cmd(TIM3,ENABLE);//?????¨?±?÷3
}
///-----------------------------
//TIM3PWM?¨??????????
//
//----------------------------------------------------------
void TIM3_PWM_GPIOConfig(void)
{
GPIO_InitTypeDef GPIO_MyPWM; //?¨???????????????????á????
// GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3??·??????? TIM3_CH2-> B5
GPIO_MyPWM.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7 ; //??????????0±?????
GPIO_MyPWM.GPIO_Mode = GPIO_Mode_AF_PP; //??????????±??¨??
GPIO_MyPWM.GPIO_Speed = GPIO_Speed_50MHz ; //??????????????±??¨??
GPIO_Init (GPIOA,&GPIO_MyPWM ); //?÷???á??????????????A??6????
GPIO_MyPWM.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1; //??????????0±?????
GPIO_MyPWM.GPIO_Mode = GPIO_Mode_AF_PP ; //??????????±??¨??
GPIO_MyPWM.GPIO_Speed = GPIO_Speed_50MHz ; //??????????????±??¨??
GPIO_Init (GPIOB,&GPIO_MyPWM ); //?÷???á??????????????B??0????
}
//------------------------------------
//?¨?±?÷3??PWM??????
//
//--------------------------------------------------------
void TIM3_PWM_Init(void)
{
TIM3_PWM_GPIOConfig();
TIM_Mode_Config( );
}
|