請問接收字串存入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.......
請問是哪裡出錯了呢?
謝謝
缓冲区数据与单个数据的关系问题吧。您直接采用数组方式获得缓冲区数据[当然也可以采用指针方法],而后用数组发送应该没有问题了。 Res=USART_ReceiveData(USART1);// 获取一个字节
USART_RX_BUF = Res; // 保存这个字节
...
point = 0; // 这里又把指针放到0位
综上,只修改了USART_RX_BUF的数据 point是该使用全局变量 本帖最后由 无薪税绵 于 2018-3-1 16:52 编辑
因为,每一次进入函数,你的 point 都为0,
所以只能接收到最后一位数据。
只要把
u8 point=0;
改为
staticu8 point=0;
就可以了。
页:
[1]