crazybird

坑人的串口调试助手

0
阅读(2933)

最近用“秉火串口调试助手”调试STM32的串口功能,该软件界面如下所示,刚开始用的好好,但不知道从什么时候开始,串口调试助手收到的数据与STM32应该发送的数据不一致。起初,我怀疑自己代码的问题,于是不断检查代码,把冗余的代码也删了,串口调试助手收到的数据还是不对,后来甚至怀疑硬件和电脑,总之找问题花了我一天半的时间,最后真的没办法了,就换了个调试助手,居然接收正确了。

1.jpg

现在开始还原这个问题,举个简单的例子,假设STM32的main函数如下所示,每隔0.5秒发送六个字节0xFC、0x87、0x00、0xA6、0x00、0x32。

int main(void)
{
    SysTick_Init();
    USART_Config();
    while(1)
    {
        USART_SendData_CB(0xFC);
        USART_SendData_CB(0x87);
        USART_SendData_CB(0x00);
        USART_SendData_CB(0xA6);
        USART_SendData_CB(0x00);
        USART_SendData_CB(0x32);
        Delay_us(500000);
    }
    return 0;
}

秉火串口调试助手接收的数据如下图所示,明显不对。

2.jpg

用SSCOM3.3串口调试助手收到的数据是正确的。

3.jpg

由以上试验结果可知,秉火串口调试助手存在BUG,不小心被我发现了,浪费我一天半的时间。最致命的是在大部分情况下没问题,只有在某些数据组合发送的情况下才会这个BUG。

好了,被坑了一次,以后不再用这个坑爹的串口调试助手了。