完善资料让更多小伙伴认识你,还能领取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的话,还不如搞个定时器来测呢,按键的抖动问题,不好整,得上示波器来看,毕竟要测某个东西,手里得有一个准确的东西,不然为啥用砝码测重量呢?
|
|
|
|
只有小组成员才能发言,加入小组>>
778 浏览 0 评论
1149 浏览 1 评论
2527 浏览 5 评论
2859 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1067浏览 3评论
190浏览 2评论
453浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 17:57 , Processed in 1.404539 second(s), Total 92, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号