在linux中 stm32实现的 vcp 被识别成 /dev/ttyACM0 , 若当成普通串口 直接调用 open() -->read()这套流程,只会读到一串乱码。 参考 http://blog.chinaunix.net/uid-26475432-id-3462651.html?_t=t 消除Linux串口收发的一些规则 ,之后vcp 接收正常。 主要原因是linux串口会有一些默认规则,不适合虚拟串口编程,使用 struct termios 参数将这些规则清除就好。