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

請問接收字串存入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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版