野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23302|回复: 2

串口3转发串口1 的数据出错了

[复制链接]
发表于 2016-8-9 21:07:51 | 显示全部楼层 |阅读模式
1火花
情况如下:              串口3连接ESP8266WIFI,我想利用串口1在串口助手发送AT指令,让串口3转发串口1接收的数据,假设转发成功,WIFI模块接受到AT指令后会回馈信息给串3,
此时让串1转发串3接受到的数据(发送给串口助手),main函数如下:
***********************************************************************************************
        while(1)
        {
                if(USART_RX_STA&0x8000)     //串口1接受到数据
                {                                          
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        printf("\r\n您发送的消息为:\r\n\r\n");
                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART3, USART_RX_BUF[t]);//向串口3发送数据
                                while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);//等待发送结束
                        }
                        USART_RX_STA=0;
                }
                if(USART_RX_STA3&0x8000)     //串口3接收到数据
                {                                          
                        len=USART_RX_STA3&0x3fff;//得到此次接收到的数据长度
                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART1, USART_RX_BUF3[t]);//向串口1发送数据
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
                        }
                        USART_RX_STA3=0;
                }

***************************************************************************************************
编译通过,现在到开发板现象如下:              打开串口助手,显示  WIFI CONNECTED            WIFI   GOT  IP  这应该是WIFI模块回馈给串口3的数据,
                                                              说明串口1成功转发串口3的数据,
                                                             可是当在串口助手上发送 AT          理论上应该显示:您发送的消息为:                           AT
                                                                                                                                                                                      OK
                                                              实际情况是:    只显示        您发送的消息为:                             
                                                                                   说明 串口1有接受到数据AT  但是串口3没有把这个数据成功转发给WIFI
                                                                                                                     请问是哪里出问题了,怎么解决? 谢谢!!!   

回复

使用道具 举报

发表于 2016-8-10 08:51:58 | 显示全部楼层
                            USART_SendData(USART3, USART_RX_BUF[t]);//向串口3发送数据
        USART_SendData(USART1, USART_RX_BUF3[t]);//向串口1发送数据

你的串口1和串口3都是用senddata函数,都是对外发送数据,没有处理接收的
回复

使用道具 举报

 楼主| 发表于 2016-8-10 15:42:59 | 显示全部楼层
flyleaf 发表于 2016-8-10 08:51
USART_SendData(USART3, USART_RX_BUF[t]);//向串口3发送数据
        USART ...

接收数据是在接收中断中处理的,将接收到的数据存放到数组USART_RX_BUF3[](串口3的),USART_RX_BUF[](串口1的)

想实现: USART1  R----T  串口助手
                          T----R
         
             USART3  R----T  WIFI
                          T----R
1、串口助手发送AT--->USART1, (USART1接收到数据AT)
2、USART3用senddata函数转发USART1接收的数据(AT),   (WIFI 接收到数据,并回馈数据给USART3)
3、USART1用senddata函数转发USART3接收的数据, (即发送到串口助手)
    以此达到利用串口助手配置WIFI模块的目的。
    这样的话应该不是没有处理接受的问题把,而且有部分实验现象,
    请看是不是其他地方有问题,谢谢你的回复!!!
回复

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 00:30 , Processed in 0.047011 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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