OpenEdv-开源电子网

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

串口中断问题-未声明

[复制链接]

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-10-23
在线时间
8 小时
发表于 2015-10-28 22:29:22 | 显示全部楼层 |阅读模式
5金钱


请教原子哥,点C文件中已经定义了EN_USART1_RX,以及USART_RX_STA,主函数中为什么提示未声明呀,该加什么东西或则头文件啊?USART.H文件都添加了,主函数和USART.C中都有,不知道是撒问题,望解答,谢谢





最佳答案

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

回复【5楼】 Watmin: --------------------------------- 我今天又试了下,这样可有解决问题 ,将extern u8  USART_RX_BUF[64]; extern u16 USART_RX_STA; 放在usart.c文件中,但不给他们赋值,然后在main函数中去定义他们,即u16 USART_RX_STA=1;u8  USART_RX_BUF[64];切记,main函数中一定得放在开头中去设声明,不然会出现user\src\main.c(20): error:&nbs ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-10-23
在线时间
8 小时
 楼主| 发表于 2015-10-28 22:29:23 | 显示全部楼层
回复【5楼】 Watmin:
---------------------------------
我今天又试了下,这样可有解决问题 ,将extern u8  USART_RX_BUF[64];
extern u16 USART_RX_STA; 放在usart.c文件中,但不给他们赋值,然后在main函数中去定义他们,即u16 USART_RX_STA=1;u8  USART_RX_BUF[64];切记,main函数中一定得放在开头中去设声明,不然会出现user\src\main.c(20): error: #268: declaration may not appear after executable,这样问题就解决了
回复

使用道具 举报

6

主题

115

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
2015-6-1
在线时间
126 小时
发表于 2015-10-28 23:21:19 | 显示全部楼层
先使能接收
#define EN_USART1_RX 1
因为是条件编译,如果EN_USART1_RX没有定义的话,下面这段程序是不会被编译的
或者你可以删去 #if EN_USART1_RX 这样就是默认一直开启接收
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-10-23
在线时间
8 小时
 楼主| 发表于 2015-10-28 23:42:53 | 显示全部楼层
回复【2楼】Watmin:
---------------------------------
删除了,但是不起作用啊,那四个叉叉主要是 针对USART_RX_STA和USART_RX_BUF这两, 按照你的说的 添加#define EN_USART1_RX 1 ,在什么位置添加?主函数中还是usart.h中,我都试过了,但是USART_RX_STA和USART_RX_BUF貌似不起作用啊?如何才能使他们 使能接受呢?
回复

使用道具 举报

6

主题

115

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
2015-6-1
在线时间
126 小时
发表于 2015-10-28 23:49:33 | 显示全部楼层
在main文件中访问usart文件中定义的变量,需要加关键字声明为外部变量
extern u8  USART_RX_BUF[.....];
extern u16 USART_RX_STA;
或者,直接在usart.h文件里定义这两个变量(建议使用前者)
回复

使用道具 举报

6

主题

115

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
2015-6-1
在线时间
126 小时
发表于 2015-10-28 23:51:40 | 显示全部楼层
是在main.c文件里声明外部变量
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-10-23
在线时间
8 小时
 楼主| 发表于 2015-10-29 00:37:19 | 显示全部楼层
回复【5楼】Watmin:
---------------------------------
谢谢你,我再试试看
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-10-23
在线时间
8 小时
 楼主| 发表于 2015-10-29 00:38:56 | 显示全部楼层
回复【6楼】xlei520:
---------------------------------
.\obj\test.axf: Error: L6218E: Undefined symbol USART_RX_BUF (referred from main.o).
.\obj\test.axf: Error: L6218E: Undefined symbol USART_RX_STA (referred from main.o).
在main函数中加完后,编译出现的错误
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-10-23
在线时间
8 小时
 楼主| 发表于 2015-10-29 00:48:29 | 显示全部楼层
回复【5楼】Watmin:
.\obj\test.axf: Error: L6218E: Undefined symbol USART_RX_BUF (referred from main.o).
.\obj\test.axf: Error: L6218E: Undefined symbol USART_RX_STA (referred from main.o).
在main函数中加完后,编译出现的错误
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 12:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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