打印

电容按键超时处理

[复制链接]
491|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

粉丝