完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我写了个程序想通过xTaskGettickCount()函数来获得按键被按下去的时间长度,程序很简单:
if(Key_Scan(KEY1_GPIO_PORT,KEY1_PIN)==KEY_ON) { timeflag=xTaskGetTickCount(); printf("flag=%d",timeflag); while(Key_Scan(KEY1_GPIO_PORT,KEY1_PIN)!=KEY_OFF); //timenow=xTaskGetTickCount(); printf("timenow=%d",timenow); } 但是不管我把按键按下去多久两次获取的时钟节拍数要么一样要么后来的比之前的只大1,是我对xTaskGetTickCount()函数的使用出问题了吗 |
|
相关推荐
7个回答
|
|
|
timenow那里没被注释掉 打错了 。。。。。
|
|
|
|
|
|
是不是按键有抖动,if里面第一句加一个延时试试,还有按键状态是不是只有KEY_ON KEY_OFF 要不是 就把while里面换成 ==KEY_ON
|
|
|
|
|
|
看现象不像是按键抖动的问题,因为只有我把按键松开之后,才会输出timenow的值
|
|
|
|
|
|
|
|
|
按键被按下,执行if语句,假设按键一直被按下,排除抖动的情况,那么while条件为真,抬起后,打印now,
现象应该是按下,打印flag,抬起打印now,由于按下按键,if的条件为真,while的条件也为真,会执行后面的;(分号语句) 猜测楼主的语句逻辑有点问题,是不是把;分号语句去掉,就可以实现楼主想要的效果了。可以一试。 可能效果不是很明显,由于抖动的问题。 |
|
|
|
|
|
好像也不是,他while里面是!=KEY_OFF 其实就是==KEY_ON 不知道为啥非!=KEY_OFF,估计是别的原因
|
|
|
|
|
|
真测Tick的话,还不如搞个定时器来测呢,按键的抖动问题,不好整,得上示波器来看,毕竟要测某个东西,手里得有一个准确的东西,不然为啥用砝码测重量呢?
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1023浏览 1评论
1851浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1361浏览 1评论
1853浏览 0评论
1179浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 08:42 , Processed in 0.792606 second(s), Total 86, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2612