完善资料让更多小伙伴认识你,还能领取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的话,还不如搞个定时器来测呢,按键的抖动问题,不好整,得上示波器来看,毕竟要测某个东西,手里得有一个准确的东西,不然为啥用砝码测重量呢?
|
|
|
|
只有小组成员才能发言,加入小组>>
680 浏览 0 评论
1099 浏览 1 评论
2463 浏览 5 评论
2797 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2634 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
645浏览 9评论
640浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
772浏览 6评论
617浏览 5评论
660浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-17 02:23 , Processed in 1.085290 second(s), Total 93, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号