STM32F429 Nucleo-144运行polymul-z2mx-m4基准测试时Serial.read()返回空字节
解决STM32F429 Nucleo串口无输出导致benchmarks.py反复烧录的问题
1. 排查VMware的USB串口映射
- 确认Windows主机上的STM32串口设备已正确映射到Ubuntu虚拟机:
- 打开VMware菜单 → 虚拟机 → 可移动设备,找到对应STMicroelectronics的串口设备,选择「连接」
- 映射完成后重新插拔开发板,用
ls /dev/ttyACM*命令确认设备存在
- 若Ubuntu中同时出现
ttyACM0和ttyACM1,可逐个尝试作为脚本的目标端口,排查是否选错了ST-Link的接口
2. 修复Ubuntu串口权限
普通用户默认无ttyACM*访问权限,执行以下命令添加权限:
sudo usermod -aG dialout $USER
注销并重新登录Ubuntu后,权限生效,再运行脚本测试。
3. 直接验证硬件串口输出
跳过Python脚本,用串口工具直接测试硬件:
- 安装
minicom:sudo apt install minicom - 启动并配置串口:
minicom -D /dev/ttyACM0 -b 115200 - 按下开发板复位键,查看是否有输出
- 若
minicom也无输出,说明问题不在脚本,需排查硬件或固件:- 确认Nucleo板的串口跳线是否插对(默认PA2/PA3需连接到ST-Link的串口引脚)
- 用ST-Link Utility烧录一个简单的串口测试固件(比如循环输出"Test"),验证硬件串口功能正常
4. 检查Python虚拟环境依赖
- 激活虚拟环境后,用
pip list确认pyserial包已安装(建议版本3.5及以上),若缺失则执行pip install pyserial - 尝试在系统全局Python环境下运行脚本,排除虚拟环境依赖冲突的问题
5. 调整脚本的串口读取逻辑
脚本反复烧录是因为未读到预期响应,可临时修改脚本调试:
- 在
Serial.read()调用处添加打印语句,输出串口状态和读取字节数 - 初始化串口时设置更长的超时时间,比如
timeout=5(默认超时可能过短) - 先手动复位开发板,再启动脚本,避免脚本烧录后未等开发板启动就开始读取
内容的提问来源于stack exchange,提问作者Yong Ryeol Choi
相关产品推荐
相关产品推荐

