stm32串口发送数据出现0x3f

2019-07-21 02:09发布

最近有了解到modbus通讯协议的CRC16校验本来打算拿这个协议跟上位机互动来解析数据,结果在自己测试的时候发现了串口发送数据存在问题如下:代码大概如下:
int main(void)
{
        my_USART_Config();
        uint8_t buffer[6];
        buffer[0]=0x31;
        buffer[1]=0x32;
        buffer[2]=0x32;
        buffer[3]=0x30;
        buffer[4]=0x63;//high
        buffer[5]=0xba;
        while(1)
        {
                for(uint8_t i=0;i<6;i++)
                {
                        COM_Sendchar(buffer[i]);
                }
                delay_ms(1000);
                       
        }
}

COM_Sendchar函数的定义:
void COM_Sendchar(uint8_t ch)
{
        USART_SendData(USART1,ch);
  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}

当发送buffer数组内的16进制数据的时候会出现bug:循环发送时末尾的0xba无法被发送被发送的是0x3F,但是0xba似乎并没有超过uint8_t的范围啊,而且在单独发送buffer[5]时接受是正常的,有没有大佬来热心解答一下。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
lìlìan
1楼-- · 2019-07-21 23:56
 精彩回答 2  元偷偷看……
lìlìan
2楼-- · 2019-07-22 01:21
智能温控设备 发表于 2019-4-30 11:46
你看下0X3fASCII里面是什么你就知道了

是?也没问题啊,关键在于我循环发送才会出现0x3F的问题,但是单个发送0xba是不会显示0x3F的

一周热门 更多>