硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6067|回复: 2
收起左侧

[有问必答] 串口数据问题

[复制链接]

8

主题

13

回帖

8

积分

新手上路

积分
8
发表于 2016-5-14 20:36:49 | 显示全部楼层 |阅读模式

//变量
#define BUFFERSIZE                       10
uint8_t aTxBuffer[BUFFERSIZE];
uint8_t aRxBuffer [BUFFERSIZE];
uint8_t ucReceiveData;
uint8_t  i;
uint8_t ubRxIndex;
uint8_t ubTxIndex;


        if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
        {
              ubTxIndex = 0;
                while (ubRxIndex < BUFFERSIZE)   
                {
                                 aRxBuffer[ubRxIndex++]=USART_ReceiveData(USART1);  
                }
            

        for(i = 0;i < BUFFERSIZE;i++)
        {
            aTxBuffer = aRxBuffer;
        }                        
        ubTxIndex = 0;
          while(ubTxIndex < BUFFERSIZE)   
          {                                
                USART_SendData(USART1, aTxBuffer[ubTxIndex++]);                     
            while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
                }        
            }

现象

现象
回复

使用道具 举报

8

主题

13

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2016-5-14 20:38:04 | 显示全部楼层
这个问题怎么解决啊  谢谢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-5-15 10:04:21 | 显示全部楼层
你的代码里面有两处错误。
1.  你的串口接收和发送都是查询方式,这个函数要改成死循环
     (USART_GetFlagStatus(USART1,USART_FLAG_RXNE)   用while

    while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
     等待一次,读取一次。

2. 下面这个是什么功能,使用有误
        for(i = 0;i < BUFFERSIZE;i++)
        {
            aTxBuffer = aRxBuffer;
        }         

要改成
        for(i = 0;i < BUFFERSIZE;i++)
        {
            aTxBuffer = aRxBuffer;
        }
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 03:36 , Processed in 0.044855 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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