做触摸电容按键是用TIM_GetCapture1(TIM2)在while里循环扫描会卡死

2019-07-21 01:26发布

做触摸电容按键是用TIM_GetCapture1(TIM2)在while里循环扫描会卡死,这是原子的代码
u16 TPAD_Get_Val(void)
{   
TPAD_Reset();
while(TIM_GetFlagStatus(TIM2, TIM_IT_CC1) == RESET)//等待捕获上升沿
{
if(TIM_GetCounter(TIM2)>TPAD_ARR_MAX_VAL-500)return TIM_GetCounter(TIM2);//超时了,直接返回CNT的值
};
return TIM_GetCapture1(TIM2);  


我将TIM_GetCounter改为TIM_GetCapture1会一while出不去,也就是说没有捕获到高电平,想问下原子个为什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
爱我别走
2019-07-21 10:33
回复【3楼】正点原子:
---------------------------------
我第一次是按照原子哥的代码写,虽然出现点问题,但解决了,之前我就把原子哥中的TIM_GetCounter();函数换成TIM_GetCapture1();也还是可以的,之后我按照原子哥的风格,独立重新写了代码,用的是TIM_GetCapture1();结果一直卡在while循环,我知道应该是CC1没有置位,我就仔细检查前面的代码,我对照好好几遍都没有发现问题,可是还是一直死在while里,我把前面的代码完全复制原子哥代码结果还死在while,我就把TIM_GetCapture1();改回跟原子哥一样,问题解决了,我之前也看过TIM_GetCapture1()和TIM_GetCounter();的区别,原子哥说TIM_GetCapture1(),是硬件级的,比TIM_GetCounter();准一点,我就想,用TIM_GetCounter(),可以TIM_GetCapture1();也应该行吧,结果出现了这问题,还有就是,我移植成功的tpad_default_val的值在90左右,而原子哥的260多,而我们的参数是一样的呀,想问下为什么?还有就是为什么用TIM_GetCounter()没有问题,TIM_GetCapture1();就会卡死?

一周热门 更多>