电容按键超时处理

[复制链接]
671|0
 楼主| 追光少年 发表于 2020-4-25 10:52 | 显示全部楼层 |阅读模式
/**
  * @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的值呢…
要是一直超时怎么办,返回去有什么用处吗………
您需要登录后才可以回帖 登录 | 注册

本版积分规则

379

主题

379

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部