你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
sappppp 提问时间:2016-4-7 15:24 /
我從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[point++] = Res;
         USART_SendData(USART1, Res);               
         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
         point = 0;         
    }      
}



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


如果我輸入的是"123456"
看到 USART_RX_BUF[0]=6一定是最後一個字元, 不懂為甚麼不會是 USART_RX_BUF[0]=1  USART_RX_BUF[1]=2  USART_RX_BUF[2]=3.......
請問是哪裡出錯了呢?
謝謝
收藏 评论4 发布时间:2016-4-7 15:24

举报

4个回答
zhjb1 回答时间:2018-3-1 08:30:01
缓冲区数据与单个数据的关系问题吧。您直接采用数组方式获得缓冲区数据[当然也可以采用指针方法],而后用数组发送应该没有问题了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Dandjinh 回答时间:2018-3-1 09:49:18
Res=USART_ReceiveData(USART1);  // 获取一个字节
USART_RX_BUF[point++] = Res; // 保存这个字节
...
point = 0; // 这里又把指针放到0位

综上,只修改了USART_RX_BUF[0]的数据

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

黑皮男 回答时间:2018-3-1 09:59:39
point是该使用全局变量

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2018-3-1 16:50:47
本帖最后由 无薪税绵 于 2018-3-1 16:52 编辑

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

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版