使用了外部脉冲计数和中断,二者都是用的TIM2通道,不知道为什么如果使能了外部计数,中断就不能使用了。
void TIM2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//TIM_DeInit(TIM2);
/* Time base configuration */
//这个就是自动装载的计数值,由于计数是从0开始的,计数10000次后为9999
TIM_TimeBaseStructure.TIM_Period = 65534;
// 这个就是预分频系数,当由于为0时表示不分频所以要减1
TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
// 高级应用本次不涉及。定义在定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)
// 使用的采样频率之间的分频比例
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
//向上计数
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//初始化定时器2
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ETRClockMode1Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
//TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
//TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
TIM_SetCounter(TIM2,0);
TIM_Cmd(TIM2,ENABLE);
// TIM_Cmd(TIM2,DISABLE);
//TIM4 -> CCER |= 0X0100; //开
// TIM2->CCER &= 0XFEFF; //关
}
如果屏蔽了这句TIM_ETRClockMode1Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0); 就能使用tim2中断了,请问各位大神这是为什么啊,有什么软件上的解决方法吗 |