OpenEdv-开源电子网

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

串口通信问题,USART_RX_BUF报错

[复制链接]

32

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
225
金钱
225
注册时间
2014-1-4
在线时间
0 小时
发表于 2014-8-18 21:21:16 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]#include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" #include "exti.h" #include "wdg.h" #include "timer.h" #include "lcd.h" #include "rtc.h" #include "wkup.h" #include "adc.h" //Mini STM32开发板范例代码13 //ADC 实验 int main(void) { u8 t; u8 len; u16 times=0; u16 adcx; float temp; Stm32_Clock_Init(9);//系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口1初始化 LED_Init(); LCD_Init(); Adc_Init(); POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(60,50,"Mini STM32"); LCD_ShowString(60,70,"ADC TEST"); LCD_ShowString(60,90,"ATOM@ALIENTEK"); LCD_ShowString(60,110,"2010/12/30"); //显示提示信息 POINT_COLOR=BLUE;//设置字体为蓝色 LCD_ShowString(60,130,"ADC_CH0_VAL:"); LCD_ShowString(60,150,"ADC_CH0_VOL:0.000V"); while(1) { adcx=Get_Adc(ADC_CH0); LCD_ShowNum(156,130,adcx,4,16);//显示ADC的值 temp=(float)adcx*(3.3/4096); adcx=temp; LCD_ShowNum(156,150,adcx,1,16);//显示电压值 temp-=adcx; temp*=1000; LCD_ShowNum(172,150,temp,3,16); LED0=!LED0; delay_ms(250); if(USART_RX_STA&0x80) { en=USART_RX_STA&0x3f;//得到此次接收到的数据长度 printf("\r\n您发送的消息为:\r\n"); for(t=0;t<len;t++) { USART1->DR=USART_RX_BUF[t]; while((USART1->SR&0X40)==0);//等待发送结束 } printf("\n\n");//插入换行 USART_RX_STA=0; }else { times++; if(times%5000==0) { printf("\r\nMiniSTM32开发板 串口实验\r\n"); printf("正点原子@ALIENTEK\r\n\r\n\r\n"); } if(times%200==0)printf("请输入数据,以回车键结束\r\n"); if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行. delay_ms(10); } } } [/mw_shl_code]
我把串口中的代码放入ADC程序中,出现以下错误是什么原因?

最佳答案

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

就是两个东西没定义。 解决办法: 在usart.h里面,取消一个宏定义的注释。就搞定了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-18 21:21:17 | 显示全部楼层
就是两个东西没定义。
解决办法:
在usart.h里面,取消一个宏定义的注释。就搞定了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-8-18 22:21:35 | 显示全部楼层
字符或者标点符号之类的错误,
手艺人要内外兼修。
回复

使用道具 举报

32

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
225
金钱
225
注册时间
2014-1-4
在线时间
0 小时
 楼主| 发表于 2014-8-23 21:07:22 | 显示全部楼层
extern u8 USART_RX_BUF[64];     //接收缓冲,最大63个字节.末字节为换行符 
extern u8 USART_RX_STA;         //接收状态标记

“取消一个宏定义的注释”是取消上面两行还是后面的汉字注释,取消了都不行,编译失败,
我把上面两句加入Main()程序中,可以编译成功,在串口调试窗口中不断显示"请输入数据,以回车键结束\r\n");  
无法发送数据,是什么原因?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-23 23:09:43 | 显示全部楼层
回复【4楼】万水千山:
---------------------------------
你直接下载我们例程,学习下先.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

32

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
225
金钱
225
注册时间
2014-1-4
在线时间
0 小时
 楼主| 发表于 2014-8-24 08:36:26 | 显示全部楼层
这就是你们的例程,串口通信是正常的,我在ADC例程中实现串口通信,编译程序要报错Undefined symbol USART_RX_BUF
(referred form test.o),Undefined symbol USART_RX_STA
(referred form test.o)
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-24 23:08:10 | 显示全部楼层
回复【6楼】万水千山:
---------------------------------
在usart.h取消一个宏定义的注释
我在2楼就答复了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-2 12:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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