/*******************************************************************************
* Function Name :General_TIM_Config
* Description : TIM2~5
* Input :
* Return :
*******************************************************************************/
void TIM3_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_InitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /*PB0 TIM3_CH3 PWM输出*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1; /*18mhz / 4/4*/
TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_InitStructure.TIM_Period = 480; /*960us 0x1e0*/
TIM_InitStructure.TIM_Prescaler = 35; /*960us 35+1 0x23*/
//TIM_InitStructure.TIM_RepetitionCounter
TIM_TimeBaseInit(TIM3 , &TIM_InitStructure);
//TIM_OCInitStructure.TIM_OCIdleState =
//TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Set;
//TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_
//TIM_OCInitStructure.TIM_OutputNState =
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /*CCER->CC1P*/
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0x0014;/*0 level*/
TIM_OC3Init(TIM3 , &TIM_OCInitStructure);
//TIM_OC4Init(TIM8 , &TIM_OCInitStructure);
TIM3->CR1 |= bit_mask_7;/*APRE*/
TIM3->CCMR2 |= bit_mask_3;/*OCxPE 发生更新时间时写入CCxR的值生效在非OPM模式下必须置位*/
TIM_CCxCmd(TIM3 , TIM_Channel_3 , TIM_CCx_Enable); /*CCER->CCxE*/
//TIM_CCxCmd(TIM3 , TIM_Channel_4 , TIM_CCx_Enable); /*CCER->CCxE*/
TIM3->EGR |= bit_mask_0; /*updata UG*/
//TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM3, ENABLE);
}
|