OpenEdv-开源电子网

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

“test.axf: Error: L6218E: Undefined symbol USART_RX_BUF 错误”

[复制链接]

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-3-11
在线时间
20 小时
发表于 2012-3-14 23:24:59 | 显示全部楼层 |阅读模式
这是什么错误???找不出来哪里错,我是按照原子哥的例程一个字一个字的打代码的。就是串口实验哪里就会变成这样的。
test.axf: Error: L6218E: Undefined symbol USART_RX_BUF (referred from test.o).
test.axf: Error: L6218E: Undefined symbol USART_RX_STA (referred from test.o).
我是新手啊。。原子哥,抽空解答下
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-3-11
在线时间
20 小时
 楼主| 发表于 2012-3-15 00:08:39 | 显示全部楼层
回复【楼主位】mstm32good:
---------------------------------
我错了。。没认真看清解释。。不好意思
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2012-3-15 00:43:46 | 显示全部楼层
呵呵
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
发表于 2012-5-19 09:57:13 | 显示全部楼层
回复【2楼】mstm32good:
---------------------------------
我也遇到同样的问题啊,请问是怎么样解决的?
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
发表于 2012-5-19 10:22:49 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
我也遇到了同样的问题啊
我已经把头文件包含了,然后相应的C文件也添加到相应的组了
但还是出现了LZ一样的问题,求解决啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2012-5-19 11:51:37 | 显示全部楼层
在usart.h文件里面.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
发表于 2012-5-19 12:22:08 | 显示全部楼层

 我已经把usart.h这个头文件包含进去了

还是出现这个问题


 


 


 



 

回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
发表于 2012-5-19 12:25:39 | 显示全部楼层
 

 我已经把usart.h这个头文件包含进去了

还是出现这个问题                                       
                               







 


 

 


 

 


 

 



 

回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
发表于 2012-5-19 12:51:18 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
   
 我已经把usart.h这个头文件包含进去了

还是出现这个问题                                        
                                








 

 

 

 

 

 

 


 
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2012-5-19 13:28:00 | 显示全部楼层
.h文件里面有个注释掉的东西,你看看,相信你就明白了.
把这个注释掉的取消注释就OK了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2012-5-18
在线时间
0 小时
发表于 2012-5-19 20:17:49 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
原来是这个
错误解决了,我还纠结了半天的说明添加H文件之类的问题
却没有留意H文件的内容
非常感谢
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2012-9-8
在线时间
0 小时
发表于 2012-9-13 16:13:17 | 显示全部楼层
哈哈哈,我也解决啦!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2012-4-15
在线时间
3 小时
发表于 2012-10-25 13:30:39 | 显示全部楼层
我也是,谢谢!
回复 支持 反对

使用道具 举报

0

主题

21

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2013-2-18
在线时间
0 小时
发表于 2013-4-13 13:26:50 | 显示全部楼层
回复【13楼】lyrics1314:
-------------------------------
是那句话啊?
回复 支持 反对

使用道具 举报

7

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2013-5-5
在线时间
0 小时
发表于 2013-5-5 21:47:17 | 显示全部楼层
哦!奥秘真的在.h的最后一句中文注释!潜伏了,我也没有注意。
回复 支持 反对

使用道具 举报

15

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2014-4-17
在线时间
4 小时
发表于 2014-5-6 17:44:19 | 显示全部楼层
找了半天终于找到了。。。。。
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-7-12
在线时间
0 小时
发表于 2014-7-21 22:51:05 | 显示全部楼层
我没有找到啊,请问具体在哪里啊?我是新手,不好意识
回复 支持 反对

使用道具 举报

25

主题

80

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2014-5-14
在线时间
6 小时
发表于 2014-9-12 16:23:02 | 显示全部楼层
我也遇到了同样的问题,我找出了原因,可是我不懂为什么,想请教原子哥。我的问题出在我只在uart.h里面定义了UART_RX_STA和UART_RX_BUF[64],在uart.c里面没有定义,为什么会要定义两次?我原先以为只要在.h文件里面定义成外部变量就行。

回复 支持 反对

使用道具 举报

6

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-4
在线时间
13 小时
发表于 2015-6-4 08:54:41 | 显示全部楼层
出现这个错误,还有一个可能就是你是用了C/C++混编,而你引用了C头文件,C++的重载机制会导致编译器会重新定义函数名,在函数名前加几个奇奇怪怪的字符,
然后你在C文件里可能引用不到C++的函数解决办法是,你需要在C++文件的头文件中把引用不到的函数加extern"C"{引用不到的函数名}
回复 支持 反对

使用道具 举报

4

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-4-18
在线时间
17 小时
发表于 2015-6-11 16:51:15 | 显示全部楼层
回复【19楼】张静茹:
---------------------------------
请问我这个是什么原因啊

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "motor.h"
//ALIENTEK????STM32??·?°????é4
//???????é  
//?????§????www.openedv.com
//?????????í??×????????????? 
 
u8 temp;  
 int main(void)
 {
//u8 c;

delay_init();       //???±??????????   
NVIC_Configuration();   //?è??NVIC????·?×é2:2??????????????2???ì????????
uart_init(19200);  //????????????9600
  LED_Init();      //LED??????????
KEY_Init();          //????????°??ü??????????????
TIM2_PWM_Init (199,7199);
TIM3_PWM_Init (199,7199);
TIM4_PWM_Init (199,7199);  
while(1)
{
if(temp)
{
switch(temp)
{
case 1:ROBOT_GO_FORWARD();
break;
case 2:ROBOT_GO_BACK();
break;
case 3:ROBOT_GO_LEFT();
break;
case 4:ROBOT_GO_RIGHT();
break;
case 5:ROBOT_STOP();
break;
case 6:ROBOT_DANCING();
break;
case 7:ROBOT_PUSH_UP();
break;
case 8:ROBOT_CLIMBING();
break;
case 9:ROBOT_SWING();
break;
}
}

}
 }



linking...
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_CLIMBING (referred from main.o).
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_DANCING (referred from main.o).
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_GO_BACK (referred from main.o).
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_GO_FORWARD (referred from main.o).
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_GO_LEFT (referred from main.o).
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_GO_RIGHT (referred from main.o).
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_PUSH_UP (referred from main.o).
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_STOP (referred from main.o).
..\OBJ\test.axf: Error: L6218E: Undefined symbol ROBOT_SWING (referred from main.o).
Target not created
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-7-15
在线时间
0 小时
发表于 2015-7-15 21:15:39 | 显示全部楼层
这样做也行的,把u8 USART_RX_BUF[64];    u8 USART_RX_STA;  定义在main函数的.c文件中,如下所示,编译即可:
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"

u8 USART_RX_BUF[64];     //接收缓冲,最大64个字节.
//接收状态
//bit7,接收完成标志
//bit6,接收到0x0d
//bit5~0,接收到的有效字节数目
u8 USART_RX_STA;       //接收状态标记  
 
int main(void)
{
u8 i;
u8 len;
。。。。。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-7-15
在线时间
0 小时
发表于 2015-7-15 21:17:55 | 显示全部楼层
回复【21楼】guocctjpu:
---------------------------------
其他地方取消定义,或者用宏#denfine做一下条件选择
回复 支持 反对

使用道具 举报

sangw2017 该用户已被删除
发表于 2017-4-28 11:34:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-5-3
在线时间
13 小时
发表于 2020-9-7 11:08:27 | 显示全部楼层
我也遇到同样问题,看来这个帖子后除了.H里头定义外.C里面把extern去掉重新定义一遍就好了,我也不知道为什么会这样。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-16 14:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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