You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F429 Nucleo-144运行polymul-z2mx-m4基准测试时Serial.read()返回空字节

解决STM32F429 Nucleo串口无输出导致benchmarks.py反复烧录的问题

1. 排查VMware的USB串口映射

  • 确认Windows主机上的STM32串口设备已正确映射到Ubuntu虚拟机:
    1. 打开VMware菜单 → 虚拟机 → 可移动设备,找到对应STMicroelectronics的串口设备,选择「连接」
    2. 映射完成后重新插拔开发板,用ls /dev/ttyACM*命令确认设备存在
  • 若Ubuntu中同时出现ttyACM0和ttyACM1,可逐个尝试作为脚本的目标端口,排查是否选错了ST-Link的接口

2. 修复Ubuntu串口权限

普通用户默认无ttyACM*访问权限,执行以下命令添加权限:

sudo usermod -aG dialout $USER

注销并重新登录Ubuntu后,权限生效,再运行脚本测试。

3. 直接验证硬件串口输出

跳过Python脚本,用串口工具直接测试硬件:

  1. 安装minicom:sudo apt install minicom
  2. 启动并配置串口:minicom -D /dev/ttyACM0 -b 115200
  3. 按下开发板复位键,查看是否有输出
  • 若minicom也无输出,说明问题不在脚本,需排查硬件或固件:
    • 确认Nucleo板的串口跳线是否插对(默认PA2/PA3需连接到ST-Link的串口引脚)
    • 用ST-Link Utility烧录一个简单的串口测试固件(比如循环输出"Test"),验证硬件串口功能正常

4. 检查Python虚拟环境依赖

  • 激活虚拟环境后,用pip list确认pyserial包已安装(建议版本3.5及以上),若缺失则执行pip install pyserial
  • 尝试在系统全局Python环境下运行脚本,排除虚拟环境依赖冲突的问题

5. 调整脚本的串口读取逻辑

脚本反复烧录是因为未读到预期响应,可临时修改脚本调试:

  1. 在Serial.read()调用处添加打印语句,输出串口状态和读取字节数
  2. 初始化串口时设置更长的超时时间,比如timeout=5(默认超时可能过短)
  3. 先手动复位开发板,再启动脚本,避免脚本烧录后未等开发板启动就开始读取

内容的提问来源于stack exchange,提问作者Yong Ryeol Choi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:10:23