sappppp 发表于 2016-4-7 15:24:57

請問接收字串存入array中,為什麼都只有最後一個字元

我從PC終端送一個字串至STM32F103中,並將接收的字串放入一個矩陣ARRAY之中!再做後續的資料處理,可以我的ARRAY卻只有第0位有數值,且是字串的最後一個字元。所以想要請問我程式中哪裡出錯呢?謝謝//接收字串資料
void USART_Receive_String(void){   
    u8 Res;
    u8 point=0;   
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {
         Res=USART_ReceiveData(USART1);
         USART_RX_BUF = Res;
         USART_SendData(USART1, Res);               
         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
         point = 0;         
    }      
}



數據處理函式區塊
            if (j == 4 )
            {
                USART_Receive_String();
                tempRxBuffer = USART_RX_BUF;
                tempRxBuffer = USART_RX_BUF;
            }


如果我輸入的是"123456"
看到 USART_RX_BUF=6一定是最後一個字元, 不懂為甚麼不會是 USART_RX_BUF=1USART_RX_BUF=2USART_RX_BUF=3.......
請問是哪裡出錯了呢?
謝謝

zhjb1 发表于 2018-3-1 08:30:01

缓冲区数据与单个数据的关系问题吧。您直接采用数组方式获得缓冲区数据[当然也可以采用指针方法],而后用数组发送应该没有问题了。

Dandjinh 发表于 2018-3-1 09:49:18

Res=USART_ReceiveData(USART1);// 获取一个字节
USART_RX_BUF = Res; // 保存这个字节
...
point = 0; // 这里又把指针放到0位

综上,只修改了USART_RX_BUF的数据

黑皮男 发表于 2018-3-1 09:59:39

point是该使用全局变量

无薪税绵 发表于 2018-3-1 16:50:47

本帖最后由 无薪税绵 于 2018-3-1 16:52 编辑

因为,每一次进入函数,你的 point 都为0,
所以只能接收到最后一位数据。
只要把 
u8 point=0;
改为
staticu8 point=0;
就可以了。

页: [1]
查看完整版本: 請問接收字串存入array中,為什麼都只有最後一個字元