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

无法通过ST-Link访问STM32F103设备的技术问题咨询

问题分析与解决方案

你的问题是ST-Link V2无法识别STM32F103,但能正常识别STM32F429,即使升级st-link工具到最新开发分支也无效。以下是可能的原因及对应的解决办法:

可能的原因

  • 接线或目标芯片启动配置错误
  • ST-Link V2固件版本过旧(你的版本是V2J29S7)
  • 目标STM32F103处于锁死状态
  • 克隆ST-Link V2的兼容性问题
  • Ubuntu下设备权限不足

解决方案

1. 检查接线与启动配置

  • 确认SWD接口接线正确:SWDIO、SWCLK、3.3V VCC、GND必须可靠连接,建议接上NRST引脚(复位)
  • 确认BOOT引脚设置:BOOT0接GND,BOOT1接GND,让芯片从主闪存启动,确保进入可调试状态
  • 检查目标芯片供电:确保3.3V供电稳定,避免电压不足导致无法通信

老版本的ST-Link固件(如V2J29S7)对STM32F103的支持可能存在兼容性问题,建议升级到最新固件:

  1. 安装STM32CubeProgrammer(Ubuntu版本可从ST官网下载)
  2. 连接ST-Link V2到电脑,打开STM32CubeProgrammer,进入"ST-Link"选项卡
  3. 点击"Firmware upgrade",按照提示完成固件升级

3. 解锁/擦除目标芯片

如果STM32F103被读保护锁死,会导致无法识别:

  • 执行擦除命令:st-flash erase
  • 如果上述命令失败,可使用STM32CubeProgrammer的"Full chip erase"功能强制擦除芯片

4. 手动指定芯片参数

如果st-info自动识别失败,可在烧录时手动指定F103的参数(以STM32F103C8T6为例):

st-flash --flash=256k --sram=20k write your_firmware.bin 0x8000000

5. 修复Ubuntu设备权限

Ubuntu下普通用户可能没有访问ST-Link设备的权限,添加udev规则:

  1. 创建规则文件:sudo nano /etc/udev/rules.d/99-stlink.rules
  2. 写入以下内容:
    SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="3748", MODE="0666"
    SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="374b", MODE="0666"
    SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="3752", MODE="0666"
    SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="3753", MODE="0666"
    
  3. 重新加载udev规则:
    sudo udevadm control --reload-rules && sudo udevadm trigger
    

st-link v1.7.0是支持STM32F103的,问题大概率不是版本不支持导致的,更可能是上述硬件或配置问题。

内容的提问来源于stack exchange,提问作者Sidisyom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:43:27