OpenEdv-开源电子网

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

点子大神,我用的是键盘检测函数来照猫改了,但是在键盘检测地方keil4总是给我提示错误

[复制链接]

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
发表于 2014-11-22 13:42:19 | 显示全部楼层 |阅读模式
5金钱

最佳答案

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

回复【27楼】jack_zhou: --------------------------------- 看清楚了, GPIO_ReadInputData 和 GPIO_ReadInputDataBit库函数的区别
爱上一匹野马,可惜放走了,就不回头了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-22 13:42:20 | 显示全部楼层
回复【27楼】jack_zhou:
---------------------------------
看清楚了, GPIO_ReadInputData 和 GPIO_ReadInputDataBit库函数的区别
回复

使用道具 举报

8

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2014-11-1
在线时间
0 小时
发表于 2014-11-22 15:17:55 | 显示全部楼层
完整代码上传来看看
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 15:22:36 | 显示全部楼层
回复【2楼】wlff:
---------------------------------
#include <key.h>
#include <delay.h>

void KEY_GPIO(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE |RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOE, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}

u8 keyscan(u8 mode)
{
static u8 key_up=1;
if(mode)
{
key_up=1;
}
if(key_up && (key1==0 ||key2==0))
{
delay_ms(100);
key_up=0;
if(key1==0)
{
return key1_pres;
}
else if(key2==0)
{
return key2_pres;
}



    else if((key1==1)&&(key2==1))
{
key_up=1;

return 0;
}



非常感谢
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-11-22 15:35:28 | 显示全部楼层
把楼主代码复制到IED里 并无报错
学无止境
回复

使用道具 举报

8

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2014-11-1
在线时间
0 小时
发表于 2014-11-22 16:14:37 | 显示全部楼层
我复制到keil里加了一点变量函数定义编译成功了的
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 16:24:40 | 显示全部楼层
回复【4楼】jermy_z:
---------------------------------
是我keil出现问题了吗,我该了不用连键了,但是到key1==0这种地方就报错,这是改的程序#include <stm32f10x.h>
#include <key.h>
#include <delay.h>

void KEY_GPIO(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE |RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOE, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}

u8 keyscan(u8 mode)
{
if(key1==0)
{
delay_ms(5);
if(key1==0)
{
key1_pres;
}
}
return key1_pres;
else if(key2==0)
{
delay_ms(5);
if(key2==0)
{
key2_pres;
}

}
return key2_pres;
else if(key1==1 || key2==1)
{
key_no;
}
return 0;
}
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 16:25:03 | 显示全部楼层
回复【5楼】wlff:
---------------------------------
是我keil出现问题了吗,我该了不用连键了,但是到key1==0这种地方就报错,这是改的程序#include <stm32f10x.h> 
#include <key.h> 
#include <delay.h> 

void KEY_GPIO(void) 

GPIO_InitTypeDef GPIO_InitStructure; 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE |RCC_APB2Periph_GPIOC, ENABLE); 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 
GPIO_Init(GPIOE, &GPIO_InitStructure); 

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 
GPIO_Init(GPIOC, &GPIO_InitStructure); 


u8 keyscan(u8 mode) 

if(key1==0) 

delay_ms(5); 
if(key1==0) 

key1_pres; 


return key1_pres; 
else if(key2==0) 

delay_ms(5); 
if(key2==0) 

key2_pres; 



return key2_pres; 
else if(key1==1 || key2==1) 

key_no; 

return 0; 
}
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 16:25:28 | 显示全部楼层
回复【7楼】jack_zhou:
---------------------------------
附上错误提示compiling key.c...
key.c(21): error:  #140: too many arguments in function call
key.c:          if(key1==0)
key.c:             ^
key.c(24): error:  #140: too many arguments in function call
key.c:                  if(key1==0)
key.c:                     ^
key.c(26): warning:  #174-D: expression has no effect
key.c:                          key1_pres;
key.c:                          ^
key.c(30): error:  #127: expected a statement
key.c:          else if(key2==0)
key.c:          ^
key.c(39): warning:  #12-D: parsing restarts here after previous syntax error
key.c:          return key2_pres;
key.c:                          ^
key.c(40): error:  #127: expected a statement
key.c:          else if(key1==1 || key2==1)
key.c:          ^
key.c(44): warning:  #12-D: parsing restarts here after previous syntax error
key.c:          return 0;
key.c:                  ^
key.c: key.c: 3 warnings, 4 errors
key.c - 4 Error(s), 3 Warning(s).
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 16:25:46 | 显示全部楼层
回复【6楼】jack_zhou:
---------------------------------
附上错误提示compiling key.c...
key.c(21): error:  #140: too many arguments in function call
key.c:          if(key1==0)
key.c:             ^
key.c(24): error:  #140: too many arguments in function call
key.c:                  if(key1==0)
key.c:                     ^
key.c(26): warning:  #174-D: expression has no effect
key.c:                          key1_pres;
key.c:                          ^
key.c(30): error:  #127: expected a statement
key.c:          else if(key2==0)
key.c:          ^
key.c(39): warning:  #12-D: parsing restarts here after previous syntax error
key.c:          return key2_pres;
key.c:                          ^
key.c(40): error:  #127: expected a statement
key.c:          else if(key1==1 || key2==1)
key.c:          ^
key.c(44): warning:  #12-D: parsing restarts here after previous syntax error
key.c:          return 0;
key.c:                  ^
key.c: key.c: 3 warnings, 4 errors
key.c - 4 Error(s), 3 Warning(s).
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

8

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2014-11-1
在线时间
0 小时
发表于 2014-11-22 16:29:16 | 显示全部楼层
要不你把整个工程文件打包上传来看看
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 16:47:18 | 显示全部楼层
回复【10楼】wlff:
---------------------------------
好的
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 16:48:55 | 显示全部楼层
这是我改过的的,但是还是出现同样的问题

第二天按键.rar

3.1 MB, 下载次数: 101

爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-11-22 20:37:59 | 显示全部楼层
回复【12楼】jack_zhou:
---------------------------------
#define key1 GPIO_ReadInputData(GPIOC,GPIO_Pin_13)
#define key2 GPIO_ReadInputData(GPIOE,GPIO_Pin_0)

好好看看这两句话吧  错了!!!

具体错在哪里  自己找  不喜欢直接告诉别人答案!
学无止境
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-22 21:55:51 | 显示全部楼层
#define key1 GPIO_ReadInputData(GPIOC,GPIO_Pin_13) --->#define key1 (GPIO_ReadInputData(GPIOC)>>13)&0x0001
#define key2 GPIO_ReadInputData(GPIOE,GPIO_Pin_0) ---> #define key2 GPIO_ReadInputData(GPIOE) &0x0001
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 22:41:55 | 显示全部楼层
回复【13楼】jermy_z:
---------------------------------
已经改好了,但是你指出错的这点我编译通过了,我看过库函数,可以按照我那种来定义管脚的,而且结果以出来了,但是还有一个奇葩现象,就是按键要按下2S左右才显示按下,就是在串口上才显示按键已经按下,无解
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-22 22:43:39 | 显示全部楼层
回复【14楼】kassandra:
---------------------------------
已经改好了,但是对你这种改法不是很了解,#define key1 (GPIO_ReadInputData(GPIOC)>>13)&0x0001 ,望详细点可否,我看过库函数,可以按照我那种来定义管脚的,而且结果以出来了,但是还有一个奇葩现象,就是按键要按下2S左右才显示按下,就是在串口上才显示按键已经按下,无解
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 00:01:06 | 显示全部楼层
回复【16楼】jack_zhou:
---------------------------------
大哥,你看过库函数原型木有哇? 人家入口参数只有一个
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 00:04:03 | 显示全部楼层
回复【16楼】jack_zhou:
---------------------------------
,#define key1 (GPIO_ReadInputData(GPIOC)>>13)&0x0001  返回第13个管脚的电平状态啊 你不是要读取这个么
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 00:05:04 | 显示全部楼层
回复【16楼】jack_zhou:
---------------------------------
你是怎么改的
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-11-23 11:40:02 | 显示全部楼层
回复【15楼】jack_zhou:
---------------------------------
你自己看看那个库函数到底是几个参数吧!

你要是没改就能通过,也真是奇迹!
学无止境
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 13:51:09 | 显示全部楼层
我应该没有理解错吧,这种定义管脚没有错啊,望大家解答一下,避免以后出错,


爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 13:52:45 | 显示全部楼层
回复【20楼】jermy_z:
---------------------------嘿嘿,诚恳的希望你给我详解的讲解可好,我感觉这种定义来读取管脚没有错啊,望纠正
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 13:54:08 | 显示全部楼层
回复【18楼】kassandra:
---------------------------------
你这个>>是按序依次来判断管脚电平吗?
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 13:56:34 | 显示全部楼层
回复【17楼】kassandra:
---------------------------------
我上我用的库函数截图了,难道是我理解错了,望解答,避免以后在出错,昨天我新建了一个工程就可以了,我都不知道为什么,呵呵
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 14:10:34 | 显示全部楼层
回复【21楼】jack_zhou:
---------------------------------
这个库函数没错,应该用这个,但是你工程里面不是用的这个位读取的方式的函数
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 14:11:21 | 显示全部楼层
回复【23楼】jack_zhou:
---------------------------------
不是,是直接右移
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 14:13:14 | 显示全部楼层
回复【25楼】kassandra:
---------------------------------
#defined key1 GPIO_ReadInputData(GPIOD,GPIO_Pin_x)这不就是定义将Dx的管脚状态为key1的状态吗? 难道是我理解错了
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 14:17:29 | 显示全部楼层
回复【26楼】kassandra:
---------------------------------
是移到第13个脚上,然后对其上的状态&上0x01,来判断是否管脚上有否有电位变化是吗?  应该就是这样了,  我记住这种方法了,回头用用,
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 15:44:26 | 显示全部楼层
回复【28楼】jack_zhou:
---------------------------------
差不多就是这个意思
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 16:33:32 | 显示全部楼层
回复【29楼】kassandra:
---------------------------------
回复【29楼】kassandra:
---------------------------------
如果说用GPIO_ReadInputData的话就必须要定义是那个管脚,就是你那种>>13 &0x01,如果加上Bit的话就可以用GPIO_ReadInputDataBit(GPIOX,GPIO_Pin_x)来直接定义了,原谅我这眼睛太粗心了
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 16:51:15 | 显示全部楼层
回复【31楼】jack_zhou:
---------------------------------
这个依据具体的应用,GPIO_ReadInputData读回的是输入总线型的数据,是16位的,依据具体应用要哪些位就取哪些位
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 16:53:29 | 显示全部楼层
回复【32楼】kassandra:
---------------------------------
还有一点一直不大懂,什么时候检测Input状态,什么时候检测output状态呢,嘿嘿
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 16:58:40 | 显示全部楼层
回复【33楼】jack_zhou:
---------------------------------
具体一点
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 17:00:56 | 显示全部楼层
回复【34楼】kassandra:
---------------------------------
就像我出错的这个键盘这样,要检测他的输入状态来判断按键是否按下,但是对于其他外设来说,什么样的外设需要检测输入状态,什么需要检测输出状态呢
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 17:03:39 | 显示全部楼层
回复【35楼】jack_zhou:
---------------------------------
一般都是检测输入啊,是从外设获取信息,输出的话都是驱动外设的,或者给外设发送信息,输出的什么自己都是知道的,不用检测。
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 17:05:51 | 显示全部楼层
回复【36楼】kassandra:
---------------------------------
以就是说外设将数据发送给主机处理的话就检测输入,主机对外设的操作的话根本不需要检测输出喽
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 17:15:11 | 显示全部楼层
回复【37楼】jack_zhou:
---------------------------------
差不多就是这个意思,当然外设给主机发送数据,主机怎么知道外设要给主机发送数据了,或者主机怎么知道外设的数据准备好了可以读取了?如果你的外设没有使用现有的主机支持的协议,比如某个外设以中断的形式通知主机,需要处理某些事情或者取走数据的时候,一般是使用主机的中断输入来自动检测,还有一种就是在程序中定时检测IO口来确定
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-23 17:27:05 | 显示全部楼层
回复【38楼】kassandra:
--------------------------------嗯嗯,懂了点点,后面用的时候遇到了再依次解决,非常感谢你的耐心解答
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-23 17:29:15 | 显示全部楼层
回复【39楼】jack_zhou:
---------------------------------
不客气,共同学习
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-27 22:15:33 | 显示全部楼层
回复【40楼】kassandra:
---------------------------------
还是得问你一句,为什么我按照点子的#define led1 Aout(1)这种来定义管脚不行,换成#define led ReadInputDataBit(GPIOA, GPIO_Pin_1)这种来定义以不行呢,板子上始终现在发光二极管不亮,我main里面已经定义了led=0了。
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-27 22:58:00 | 显示全部楼层
回复【41楼】jack_zhou:
---------------------------------
换成这种也可以的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-27 23:01:04 | 显示全部楼层
回复【42楼】正点原子:
---------------------------------
终于见到你了,我对main函数编译没有警告与错误,但是全程编译就出一大片错,还在慢慢的改呢,希望你可以给我们这种刚入门的写一部分错误解决的方法一下呗
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-28 07:53:43 | 显示全部楼层
回复【43楼】jack_zhou:
---------------------------------
依据错误提示,绝大多数错误都能很快发现的
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-28 07:57:35 | 显示全部楼层
回复【41楼】jack_zhou:
---------------------------------
#define led1 Aout(1) 这种可以的啊,但是要先#include sys.h,详细观察下原子的sys.h,看看原子是怎么实现类似51的位操作的
回复

使用道具 举报

62

主题

284

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2014-11-22
在线时间
145 小时
 楼主| 发表于 2014-11-28 18:05:37 | 显示全部楼层
回复【45楼】kassandra:
---------------------------------
加入我不用原子的那个sys里面的定义的话,直接用#define led GPIO_ReadInpuDataBit(GPIOX,GPIO_Pin_x)这样可以吗?
原子没有给我明确的回答
爱上一匹野马,可惜放走了,就不回头了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-28 22:44:25 | 显示全部楼层
回复【46楼】jack_zhou:
---------------------------------
可以啊。
这个你自己测试下就出答案了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-29 14:08:58 | 显示全部楼层
回复【46楼】jack_zhou:
---------------------------------
可以的啊,因为 这个函数是库里面的,你的工程已经包含进去相应的头文件了(其实就是一个全局声明),那么你就可以在这个函数的声明后面宏定义,编译器将你程序里所有的这个宏定义替换成这个函数,由于事先已经通知了编译器后面会使用这个函数,所以在本.c文件中即使没有这个函数的定义,单纯编译本.c文件 编译器不会报错,编译整个工程的时候,编译器在本.c文件中没有找到这个函数的定义,那么它会在其他文件中去查找,如果没有查找到那么就会报该函数未定义的错误,事实上会在库文件中找到这个函数的定义,所以不会报错
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 10:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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