/**
* @brief 获取定时器捕获值
* @param 无
* @retval 定时器捕获值。如果超时,则直接返回定时器的计数值。
*/
uint16_t TPAD_Get_Val(void)
{
// 每次捕获的时候,必须先复位放电
TPAD_Reset ();
// 当电容按键复位放电之后,计数器清0开始计数
TIM_SetCounter (TPAD_TIM,0);
// 清除相关的标志位
TIM_ClearITPendingBit (TPAD_TIM, TPAD_TIM_IT_CCx | TIM_IT_Update );
// 等待捕获上升沿,当电容按键充电到1.8V左右的时候,就会被认为是上升沿
while(TIM_GetFlagStatus (TPAD_TIM, TPAD_TIM_IT_CCx) == RESET)
{
// 如果超时了,直接返回CNT的值
if ( TIM_GetCounter (TPAD_TIM) > TPAD_TIM_Period - 500 )
{
return TIM_GetCounter (TPAD_TIM);
}
}
// 获取捕获比较寄存器的值
return TPAD_TIM_GetCapturex_FUN(TPAD_TIM);
}
超时处理那里没有看懂什么意思……
超时后为什么要返回CNT的值呢…
要是一直超时怎么办,返回去有什么用处吗……… |