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]时接受是正常的,有没有大佬来热心解答一下。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。