大家好,现在小弟我遇到一个问题,就是我用按键中断来控制TIM产出频率改变的PWM和PWM消失,但是有一个问题及时当我按下控制TIM产出频率改变PWM的那个键时,有波形变化,按下让PWM消失那个键时,为低电平,再按控制TIM产出频率改变PWM的那个键时,变化的pwm并不是从头开始变化,而是基于第一次接下来的频率变化,这应该怎样改才能让它又重新变化么?】
void EXTI1_IRQHandler(void)
{
/* Go to infinite loop when Memory Manage exception occurs */
if(EXTI_GetITStatus(EXTI_Line1) !=RESET)
{
// TIM_Cmd(TIM2,ENABLE);
TIM2->CNT = 0;
TIM_Configuration();
TIM_Cmd(TIM2,ENABLE);
EXTI_ClearITPendingBit(EXTI_Line1);
}
}
void EXTI2_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line2) !=RESET)
{
TIM_Cmd(TIM2,DISABLE);
EXTI_ClearITPendingBit(EXTI_Line2);
}
}
void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimeBaseStructure.TIM_Period = 65535;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2 , &TIM_TimeBaseStructure);
TIM_PrescalerConfig(TIM2 , 5 , TIM_PSCReloadMode_Immediate);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM2 , TIM_OCPreload_Disable);
TIM_ITConfig(TIM2 , TIM_IT_CC1 , ENABLE);
}
|