新手入门
- 积分
- 30
- 金钱
- 30
- 注册时间
- 2015-1-2
- 在线时间
- 0 小时
|
5金钱
void TIM1_PWM_Init(u16 arr,u16 psc)
{
u16 CCR1_Val=8400; //?è??TIM1?¨??1????????±?50%
u16 CCR2_Val=8400; //?è??TIM1?¨??1????????±?25%
//u16 CCR3_Val=450; //?è??TIM1?¨??1????????±?12.5%
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //?????¨?±?÷3?±??
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOB,ENABLE); //????GPIO??·????????±??
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; //PWM??????PA8,9,10
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOE,&GPIO_InitStructure); //??????GPIO
/*PB8 CH1n*/
//GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14;
//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
//GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
//GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
//GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
//GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_TIM1); //???????????????????±??
GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_TIM1);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_TIM1);//PE9
GPIO_PinAFConfig(GPIOE,GPIO_PinSource11,GPIO_AF_TIM1);//PE8
//GPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_TIM1);
//GPIO_PinAFConfig(GPIOB,GPIO_PinSource14,GPIO_AF_TIM1);
//???????¨?±?÷ TIM1
TIM_TimeBaseStructure.TIM_Period = arr; //?è????×?????×°????????
TIM_TimeBaseStructure.TIM_Prescaler =psc; //?è???¤·?????
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //?è???±??·???:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM ?ò??????????
TIM_TimeBaseStructure.TIM_RepetitionCounter=0; //?????????÷??????×????ü??pwm????±?
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
//pwm????????,TIM_OCInitStructure??????????
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; //?è????pwm2????????
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //???????¨??????//±???????????
TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Disable; //??????????????
//????????????(????pulse)???????¨?±?÷???á???????¨???¨?±?÷????????
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; //?è??????????//???????????????????????§????????
TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High; //?è????????????????//???????????????????????§????????
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
//?è???¨??1????±????????÷????????-????±???50%
TIM_OCInitStructure.TIM_Pulse=CCR1_Val;
TIM_OC1Init(TIM1,&TIM_OCInitStructure); //?è???¨??1
//?è???¨??2????±????????÷????????-????±???25%
TIM_OCInitStructure.TIM_Pulse=CCR2_Val;
TIM_OC2Init(TIM1,&TIM_OCInitStructure);
//?è???¨??3????±????????÷????????-????±???12.5%
//TIM_OCInitStructure.TIM_Pulse=CCR3_Val;
// TIM_OC3Init(TIM1,&TIM_OCInitStructure);
//?????????????????????????¨?±?÷?????????¨???¨?±?÷????????TIM_BDTRInitStructure????????????
TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Enable; //??????????????????//???????????°??±?×????±????
TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_Enable; //??????????????????//??±????????°??±?×????±????
TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_OFF; //???¨?è?? //???¨??±?
TIM_BDTRInitStructure.TIM_DeadTime=0x05; //69ns //?????±???è??
TIM_BDTRInitStructure.TIM_Break=TIM_Break_Disable; //????????????
TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakPolarity_High; //???????????? //?????????????????§
TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable; //×???????????
TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);
//?????????ò??
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable); //????TIMx??CCR1?????¤×°???????÷?
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM1,ENABLE); //????TIMx??ARR?????¤×°???????÷?
TIM_Cmd(TIM1,ENABLE); //?ò??TIM2?
//???????????????¨?±?÷????????????pwm±????ò???
TIM_CtrlPWMOutputs(TIM1,ENABLE); //pwm?????????????¨???????ò??
}
|
|