OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7684|回复: 7

FreeRTOS获取时钟节拍数的问题

[复制链接]

14

主题

30

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-9-26
在线时间
27 小时
发表于 2018-1-5 12:07:07 | 显示全部楼层 |阅读模式
1金钱
我写了个程序想通过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()函数的使用出问题了吗


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

30

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-9-26
在线时间
27 小时
 楼主| 发表于 2018-1-5 12:09:26 | 显示全部楼层
timenow那里没被注释掉 打错了 。。。。。
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-1-5 12:50:25 | 显示全部楼层
是不是按键有抖动,if里面第一句加一个延时试试,还有按键状态是不是只有KEY_ON KEY_OFF 要不是 就把while里面换成 ==KEY_ON  
回复

使用道具 举报

14

主题

30

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-9-26
在线时间
27 小时
 楼主| 发表于 2018-1-5 12:55:17 | 显示全部楼层
275891381 发表于 2018-1-5 12:50
是不是按键有抖动,if里面第一句加一个延时试试,还有按键状态是不是只有KEY_ON KEY_OFF 要不是 就把while ...

看现象不像是按键抖动的问题,因为只有我把按键松开之后,才会输出timenow的值
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-1-6 01:22:35 | 显示全部楼层
帮顶
回复

使用道具 举报

14

主题

115

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2015-12-19
在线时间
307 小时
发表于 2018-1-6 17:23:40 | 显示全部楼层
按键被按下,执行if语句,假设按键一直被按下,排除抖动的情况,那么while条件为真,抬起后,打印now,
现象应该是按下,打印flag,抬起打印now,由于按下按键,if的条件为真,while的条件也为真,会执行后面的;(分号语句)
猜测楼主的语句逻辑有点问题,是不是把;分号语句去掉,就可以实现楼主想要的效果了。可以一试。
可能效果不是很明显,由于抖动的问题。
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-1-6 19:21:59 | 显示全部楼层
shiqinghai 发表于 2018-1-6 17:23
按键被按下,执行if语句,假设按键一直被按下,排除抖动的情况,那么while条件为真,抬起后,打印now,
现 ...

好像也不是,他while里面是!=KEY_OFF 其实就是==KEY_ON 不知道为啥非!=KEY_OFF,估计是别的原因
回复

使用道具 举报

14

主题

115

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2015-12-19
在线时间
307 小时
发表于 2018-1-6 20:56:40 | 显示全部楼层
275891381 发表于 2018-1-6 19:21
好像也不是,他while里面是!=KEY_OFF 其实就是==KEY_ON 不知道为啥非!=KEY_OFF,估计是别的原因

真测Tick的话,还不如搞个定时器来测呢,按键的抖动问题,不好整,得上示波器来看,毕竟要测某个东西,手里得有一个准确的东西,不然为啥用砝码测重量呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表