OpenEdv-开源电子网

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

按键扫描的宏定义#define KEY0_PRES 1 是什么意思

[复制链接]

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
发表于 2016-3-16 14:06:01 | 显示全部楼层 |阅读模式
#ifndef __KEY_H
#define __KEY_H
#include "sys.h"


#define KEY0 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)//读取按键 0
#define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)//读取按键 1
#define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//读取按键 2




#define KEY0_PRES   1    //KEY0
#define KEY1_PRES   2   //KEY1
#define WKUP_PRES  3  //WK_UP


void KEY_Init(void);//IO 初始化
u8 KEY_Scan(u8 mode); //按键扫描函数

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

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-4-4
在线时间
5 小时
发表于 2016-3-17 08:40:31 | 显示全部楼层
戏言啦 发表于 2016-3-16 22:48
我知道 是用key1_PRES代替了  1    但我不知道  1  2  3  这表示什么?

1 2 3 好像是分别代表是三个按键按下的状态,函数返回 1 2 3值就知道按个按键被按下,好久之前看的了不知道有没有记错
回复 支持 1 反对 0

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
 楼主| 发表于 2016-3-16 14:06:41 | 显示全部楼层
萌新求帮助啊   这三个代码 看不懂  百度也找不到,,,


#define KEY0_PRES   1    //KEY0
#define KEY1_PRES   2   //KEY1
#define WKUP_PRES  3  //WK_UP
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
 楼主| 发表于 2016-3-16 14:08:01 | 显示全部楼层
为什么要把   1     宏定义成  KEY0_PRES  呢
回复 支持 反对

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-3-16 15:32:18 | 显示全部楼层
可以很负责任的告诉你,定义为1只是程序员的习惯罢了,
这个值本身没有任何意义(除了和KEY1_PRES的2相区分)

不过建议这种场合最好用枚举,显得代码更加紧凑、规范。
坚决不用寄存器,拒绝重复造轮子。
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
 楼主| 发表于 2016-3-16 16:35:14 | 显示全部楼层
xkwy 发表于 2016-3-16 15:32
可以很负责任的告诉你,定义为1只是程序员的习惯罢了,
这个值本身没有任何意义(除了和KEY1_PRES的2相区 ...

好的 谢谢 我去理解一下
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
 楼主| 发表于 2016-3-16 17:01:36 | 显示全部楼层
还是没理解  整个代码 没地方有     1  2  3 啊   
为什么要用      KEY0_PRES    KEY1_PRES    WKUP_PRES来代替呢
【顺便我应该没理解错吧  三行代码的意思就是用KEY0_PRES    KEY1_PRES    WKUP_PRES 来替换 1  2  3
回复 支持 反对

使用道具 举报

2

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2014-11-26
在线时间
29 小时
发表于 2016-3-16 17:13:13 | 显示全部楼层
使用宏定义一种好的习惯,以后再更改代码的时候可以省去很多麻烦
努力让自己独立坚强,这样才能有底气告诉我爱的人,我爱她。
回复 支持 反对

使用道具 举报

69

主题

495

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2196
金钱
2196
注册时间
2015-11-14
在线时间
542 小时
发表于 2016-3-16 17:42:30 | 显示全部楼层
这个你喜欢,想怎样定义就怎样定义,没有规定的
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-4-4
在线时间
5 小时
发表于 2016-3-16 18:04:43 | 显示全部楼层
宏定义     方便读理解函数   
回复 支持 反对

使用道具 举报

351

主题

1472

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8078
金钱
8078
注册时间
2015-10-15
在线时间
2915 小时
发表于 2016-3-16 21:54:48 | 显示全部楼层
仅仅是为了方便。。。
按键1按下,返回1,,,1是啥意思呢?如果定义了这个宏定义,就用KEY1_PRES代替,增加程序可读性。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
 楼主| 发表于 2016-3-16 22:48:31 | 显示全部楼层
openedvadmin 发表于 2016-3-16 21:54
仅仅是为了方便。。。
按键1按下,返回1,,,1是啥意思呢?如果定义了这个宏定义,就用KEY1_PRES代替,增 ...

我知道 是用key1_PRES代替了  1    但我不知道  1  2  3  这表示什么?
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
 楼主| 发表于 2016-3-16 22:48:50 | 显示全部楼层
禤馒头 发表于 2016-3-16 18:04
宏定义     方便读理解函数

我知道 是用key1_PRES代替了  1    但我不知道  1  2  3  这表示什么?
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2016-1-11
在线时间
19 小时
发表于 2016-3-16 22:52:25 | 显示全部楼层
楼主再看按键扫描吗?我想请教一下 那个key的类型是vu8,vu8一般是在什么情况下用呢?而且在程序中把vu8换成u8就会出错,为什么?
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
 楼主| 发表于 2016-3-17 14:13:00 | 显示全部楼层
未命名 发表于 2016-3-16 22:52
楼主再看按键扫描吗?我想请教一下 那个key的类型是vu8,vu8一般是在什么情况下用呢?而且在程序中把vu8换成 ...

我不太懂    我看的是mini开发板的资料  案件扫描没看到vu8  
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-3-14
在线时间
6 小时
 楼主| 发表于 2016-3-17 15:21:04 | 显示全部楼层
又看了遍程序 弄懂了  谢谢各位帮助了
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-4-9
在线时间
6 小时
发表于 2018-4-14 20:04:44 | 显示全部楼层
哈哈哈,我来挖坟来了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-10-10
在线时间
0 小时
发表于 2018-10-10 15:26:01 | 显示全部楼层
楼主现在懂#define KEY0_PRES 1 啥意思了吗
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-10-30
在线时间
0 小时
发表于 2018-10-30 17:34:13 | 显示全部楼层
别等待 发表于 2018-10-10 15:26
楼主现在懂#define KEY0_PRES 1 啥意思了吗

就是当按键KEY0按下时,返回1,然后把1宏定义为KEY0_PRES,在源文件中就可以写成else if(KEY0==0) return KEY0_PRES,提高代码的可读性~
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2019-2-14
在线时间
2 小时
发表于 2019-3-14 20:09:53 | 显示全部楼层
未命名 发表于 2016-3-16 22:52
楼主再看按键扫描吗?我想请教一下 那个key的类型是vu8,vu8一般是在什么情况下用呢?而且在程序中把vu8换成 ...

是啊,我也不懂这个vu8
回复 支持 反对

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-14 21:27:53 | 显示全部楼层
通常处理按键的程式, 都会把不同按键的输入重新排放在一变量, 方便运算
大慨是这样用的

     u8 KeyReg=0;
     if (KEY0) KeyReg+=KEY0_PRES;
     if (KEY1) KeyReg+=KEY1_PRES;
     if (WK_UP) KeyReg+=WKUP_PRES;

    if (KeyReg)  // 判断有没有按键
    {
         。。。。。。

         return KeyyReg;  // 按键确认
    }
    return 0;
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2020-6-7
在线时间
5 小时
发表于 2020-6-12 01:19:55 | 显示全部楼层
不忘初心16725 发表于 2018-10-30 17:34
就是当按键KEY0按下时,返回1,然后把1宏定义为KEY0_PRES,在源文件中就可以写成else if(KEY0==0) return ...

楼主,这个1 是系统内部设置好的么?
回复 支持 反对

使用道具 举报

48

主题

179

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2017-6-19
在线时间
90 小时
发表于 2020-7-2 23:29:52 | 显示全部楼层
简约123 发表于 2019-3-14 20:09
是啊,我也不懂这个vu8

vu8是uint8_t的缩写,uint8_t又是unsigned    char(0-255)的缩写。可以在函数里面一步一步用“Go to definition”去查找。
回复 支持 反对

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2021-1-17
在线时间
9 小时
发表于 2021-1-21 20:27:59 | 显示全部楼层
在key.h中定义了,但是key.c里面并没有应用到返回值1啊
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2021-10-30
在线时间
1 小时
发表于 2021-10-30 14:42:50 | 显示全部楼层
KEY0_PERS是按键的写法,后面的是 就是把按键宏定义为1 ,  下面两个键类似   这样返回值 return 返回 KEY0_PERS就是返回1
后面两个按键定义2和3 只是单纯的为了和1 区分 ,楼主也可以宏定义为其他的

回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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