这是按键上升沿的捕获函数
u16 TPAD_Get_Val(void)
{
TPAD_Reset();
while(TIM_GetITStatus(TIM5, TIM_IT_CC2) != RESET)//等待上升沿//操作Tim5_SR
{
if(TIM_GetCounter(TIM5)>TPAD_ARR_MAX_VAL-500)
return TIM_GetCounter(TIM5);//超时了,直接返回CNT的值//操作Tim5_CNT
};
return TIM_GetCapture2(TIM5); //操作Tim5_CCR2
}
-------------------------------------------------
我的问题是
如果没有检测到上升沿,捕获标志位为0,因此while()会直接跳过,那么返回的值就不是上升沿时的值了,那么应该改成
while(TIM_GetITStatus(TIM5, TIM_IT_CC2) == RESET)//等待溢出
{
if(TIM_GetCounter(TIM5)>TPAD_ARR_MAX_VAL-500)
return TIM_GetCounter(TIM5);//超时了,直接返回CNT的值
};
return TIM_GetCapture2(TIM5);
但为什么不可以 |