最近有了解到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]时接受是正常的,有没有大佬来热心解答一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>