OpenEdv-开源电子网

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

求助,这段代码我看不懂。。。。是.h头文件里面的

[复制链接]

5

主题

20

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-8-1
在线时间
4 小时
发表于 2016-8-5 10:23:31 | 显示全部楼层 |阅读模式
1金钱
#ifndef __KEY_H
#define __KEY_H
#include "sys.h"
#define KEY0        GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)
#define KEY1        GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)
#define KEY2        GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)
#define KEY3        GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define WK_UP        GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define KEY0_PRES 1
#define KEY1_PRES 2
#define KEY2_PRES 3
#define WKUP_PRES 4
void KEY_Init(void);
u8 KEY_Scan(u8);
#endif

我看不懂的是其中的
#define KEY0_PRES 1
#define KEY1_PRES 2
#define KEY2_PRES 3
#define WKUP_PRES 4
为什么每一句的后面都要加上1,2,3,4这些依次递增的数字呢?有什么意义吗?不加会如何?

最佳答案

查看完整内容[请看2#楼]

不是赋值,是在预编译的时候,把KEY0_PRES 全部替换成1。 楼主最好看看什么叫预编译
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-8-5 10:23:32 | 显示全部楼层
Xpressup 发表于 2016-8-5 10:59
#define KEY0_PRES 1  就是把KEY0_PRES赋值为1


  不是赋值,是在预编译的时候,把KEY0_PRES 全部替换成1。
楼主最好看看什么叫预编译
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-8-5 10:26:45 | 显示全部楼层
觉得你先不要着急看程序,先补一下C语言基础吧,基础不行,寸步难行
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-8-5 10:34:26 | 显示全部楼层
不会走就想着飞
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2016-8-3
在线时间
11 小时
发表于 2016-8-5 10:59:27 | 显示全部楼层
#define KEY0_PRES 1  就是把KEY0_PRES赋值为1
回复

使用道具 举报

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
发表于 2016-8-5 11:23:06 | 显示全部楼层
#define KEY0_PRES 1
#define KEY1_PRES 2
#define KEY2_PRES 3
#define WKUP_PRES 4


这几个是自己取得名字,无所谓1.2.3.4,你都可以把他们改成小猫小狗小猪都行。实际上主要的是整句语言:#define KEY0        GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)    这个后面是io口的实际操作读取ILO口的状态!然后把这个操作叫做KEY0,你看不懂KEY0,你可以叫做xiaozhu,xiaomao  都行!C语言基本的知识。起始库函数是可以直接看语句的redaInputDataBit .字面理解就是读取输入的数据!
回复

使用道具 举报

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
424
金钱
424
注册时间
2016-6-12
在线时间
93 小时
发表于 2016-8-5 16:13:11 | 显示全部楼层
去看看C语言中编译预处理宏定义的部分你就明白了~
回复

使用道具 举报

5

主题

20

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-8-1
在线时间
4 小时
 楼主| 发表于 2016-8-6 08:50:25 | 显示全部楼层
这样全部替换成1的话是不是在这个源代码文件里面用1,2,3,4分别替代KEY0~3_PERS这几个标识符呢?
回复

使用道具 举报

5

主题

20

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-8-1
在线时间
4 小时
 楼主| 发表于 2016-8-6 08:51:00 | 显示全部楼层
憨厚诚实大叔 发表于 2016-8-5 10:23
不是赋值,是在预编译的时候,把KEY0_PRES 全部替换成1。
楼主最好看看什么叫预编译


这样全部替换成1的话是不是在这个源代码文件里面用1,2,3,4分别替代KEY0~3_PERS这几个标识符呢?
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-8-6 09:17:33 | 显示全部楼层
巨魔Punk 发表于 2016-8-6 08:51
这样全部替换成1的话是不是在这个源代码文件里面用1,2,3,4分别替代KEY0~3_PERS这几个标识符呢?

额,你可以去百度看看预编译
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2016-8-6 09:40:10 | 显示全部楼层
这个是用来和按键扫描函数返回值比对的,比如是KEY0按下,返回1,那么这里KEY0_PRES刚好是1,如果返回的也是1 ,就说明是KEY0按下
回复

使用道具 举报

5

主题

20

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-8-1
在线时间
4 小时
 楼主| 发表于 2016-8-6 13:58:37 | 显示全部楼层
Electronic 发表于 2016-8-6 09:40
这个是用来和按键扫描函数返回值比对的,比如是KEY0按下,返回1,那么这里KEY0_PRES刚好是1,如果返回的也 ...

谢谢~~~~~~~~~~~~~
回复

使用道具 举报

5

主题

20

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-8-1
在线时间
4 小时
 楼主| 发表于 2016-8-6 13:58:53 | 显示全部楼层
sdjncy 发表于 2016-8-5 16:13
去看看C语言中编译预处理宏定义的部分你就明白了~

恩恩。谢谢~~~~~~~~
回复

使用道具 举报

5

主题

20

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-8-1
在线时间
4 小时
 楼主| 发表于 2016-8-6 13:59:15 | 显示全部楼层
龙之谷 发表于 2016-8-5 10:26
觉得你先不要着急看程序,先补一下C语言基础吧,基础不行,寸步难行

恩恩,好的好的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-1 20:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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