求助一个小问题

2019-07-20 15:52发布

我想将USART3接受到的数据存放到数组USART3_RX_BUF[],再将USART3_RX_BUF[]的数据发给USART1,最后显示到串口助手
                       for(t=0;t<len;t++)
                        {
                                USART_SendData(USART3,USART3_RX_BUF[t]);
                                while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);
                        }

我想问的是直接用这串代码可行么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
咎落
1楼-- · 2019-07-21 17:57
yklstudent 发表于 2017-3-22 10:12
你这是发送代码,用于USART1发送没什么问题

帮我看看这串代码可行不?
linzhijiang_sz
2楼-- · 2019-07-21 21:13
首先,先配置串口1和串口3.

先在USART3那里接受数据,接受到的数据存放到数组USART3_RX_BUF[]
unsigned char UART3GetByte(unsigned char* GetData)
{             
        if(USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET)
        {  return 0;//没有接收到数据
                }
        *GetData = USART_ReceiveData(USART1);
        return 1;//收到数据
}
我使用的是查询的方式。没有开中断。
void UART1Test(void)
{
       unsigned char i = 0;

       while(1)
       {   
                 while(UART1GetByte(&i))
        {
         USART_SendData(USART1,i); 把数据发出去
        }      
       }     
}
UART1Test()你可以放到主循环中
咎落
3楼-- · 2019-07-21 22:00
linzhijiang_sz 发表于 2017-3-22 11:26
首先,先配置串口1和串口3.

先在USART3那里接受数据,接受到的数据存放到数组USART3_RX_BUF[]

我不太了解查询的方式,我想问这条语句 while(UART1GetByte(&i))是等待USART1接受字符么?
linzhijiang_sz
4楼-- · 2019-07-21 22:01
咎落 发表于 2017-3-22 13:27
我不太了解查询的方式,我想问这条语句 while(UART1GetByte(&i))是等待USART1接受字符么?

不好意思,while循环的判断写错了!
void UART1Test(void)
{
       unsigned char i = 0;

       while(1)
       {   
                 while(UART3GetByte(&i))
        {
         USART_SendData(USART1,i); 把数据发出去
        }      
       }     
}
改成while(UART3GetByte(&i))才对
咎落
5楼-- · 2019-07-21 23:44
 精彩回答 2  元偷偷看……
咎落
6楼-- · 2019-07-22 01:06
linzhijiang_sz 发表于 2017-3-22 14:23
不好意思,while循环的判断写错了!
void UART1Test(void)
{

还请大神帮我看一下主函数的程序,十分感谢,对于有些低级错误还请包涵!
int main(void)
{

        u8 i;
        u8 ch[5]={0x68,0x04,0x00,0x04,0x08};
        u8 USART_RX_BUF[200];
        delay_init(168);
        UART13_Init(9600);
        LED_Init();

        while(1)
        {
          for(i=0;i<6;i++)
                        {
                          while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
                          USART_SendData(USART3,ch);
                        }
                        if(USART_ReceiveData(USART3))
                {
                   LED1=!LED1;
                   delay_ms(30);
                }
                UART3GetByte(USART_RX_BUF[200]);
                UART1Test();
        }
  
}

一周热门 更多>