2501_94259007 2026-01-25 00:42 采纳率: 0%
浏览 3

Stm32初学者遇到烧录困难

鼠鼠跟着江科大的视频学stm32,做到新建工程的时候烧录就碰到了Target DLL has been cancelled,鼠鼠以为是中间哪里做错了于是重新做了一个工程,还是出现了同样的问题,但是呢STLINK接上之后灯是闪烁的,Boot引脚由于初学不是很明白怎么接,是Boot0和Boot1都是按买回来的时候一样都接0,检查了一下STLINK的接线没问题就,但是debug-setting-Debug和up不一样,clock selected他是4我是0,Serial和Version FW 都不一样,如图所示,想问一下大家应该怎么解决

img

img

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-01-25 00:43
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你提到的“Target DLL has been cancelled”是ST-Link烧录器在使用STM32开发板时常见的错误之一,通常与 调试接口配置不正确、Boot引脚设置错误、或ST-Link驱动/固件问题 有关。以下是一个详细的解决方案,帮助你排查并解决这个问题。


    ✅ 一、问题分析

    1. Target DLL has been cancelled 的原因

    这个错误提示通常表示:

    • ST-Link 无法与目标设备(STM32)建立连接;
    • 目标设备未进入调试模式(如Boot0设置错误);
    • ST-Link的驱动或固件需要更新;
    • 调试接口配置不正确(如CLK选择错误)。

    ✅ 二、详细解决方案(按顺序操作)

    第一步:确认Boot引脚设置

    重点!
    STM32的 Boot0 和 Boot1 引脚 决定了芯片启动模式:

    | Boot0 | Boot1 | 启动模式 | |-------|-------|----------------------| | 0 | 0 | 从Flash启动 | | 1 | 0 | 从系统存储器启动 | | 0 | 1 | 从SRAM启动 |

    📌 建议: 初学阶段,Boot0接高电平(1),Boot1接低电平(0),这样可以进入 系统存储器启动模式,便于调试和烧录。

    如果你目前的设置是 Boot0=0, Boot1=0,那说明芯片是从Flash启动,可能没有进入调试模式。

    ✅ 操作步骤:

    1. 找到STM32的Boot0和Boot1引脚(一般在开发板上会有标注)。
    2. Boot0接到VCC(高电平)Boot1接到GND(低电平)
    3. 重新连接ST-Link,并尝试烧录。

    第二步:检查ST-Link的接线

    确保你使用的是正确的接口(SWD或JTAG),并检查以下几点:

    • SWDIO 和 SWCLK 是否正确连接到 STM32 的对应引脚(通常是 PA13 和 PA14)。
    • VDD 和 GND 是否正确连接。
    • 如果使用的是ST-Link V2,是否已经安装了最新的驱动和固件?

    📌 注意: 不要将 ST-Link 的 VDD 接到 STM32 的 VDD,否则可能会损坏电路。


    第三步:检查调试设置(Keil / STM32CubeIDE)

    在 Keil 中:

    1. 打开工程后,点击 Options for TargetDebug
    2. 选择 ST-Link Debugger
    3. 确保 Clock SourceInternal(不是 External)。
    4. 确保 Serial NumberVersion FW 与你的 ST-Link 设备一致(可以查看 ST-Link 的标签)。

    在 STM32CubeIDE 中:

    1. 打开项目后,右键点击工程 → Debug AsSTM32 Debug
    2. 检查 Debugger 设置为 ST-Link
    3. 确保 Clock SourceInternal
    4. 如果有多个 ST-Link,选择正确的设备。

    第四步:更新 ST-Link 固件

    如果你的 ST-Link 是 V2 版本,可能需要更新其固件以兼容较新的 STM32 芯片。

    更新方法:

    1. 下载 ST-Link Utility 工具(官网下载)。
    2. 连接 ST-Link 到电脑。
    3. 打开工具,选择 Firmware Update
    4. 按照提示完成固件升级。

    第五步:尝试更换 ST-Link 或开发板

    如果以上步骤都无效,可能是:

    • ST-Link 损坏;
    • 开发板上的 STM32 损坏;
    • 电源不稳定。

    你可以尝试:

    • 使用另一个 ST-Link(如 J-Link);
    • 更换一个 STM32 开发板测试。

    ✅ 三、代码示例(可选)

    如果你使用的是 STM32CubeIDE,并且希望用 HAL 库进行烧录,可以参考如下代码结构(用于初始化和烧录):

    #include "main.h"
    
    int main(void)
    {
        HAL_Init();
        SystemClock_Config();
        MX_GPIO_Init();
        MX_USART2_UART_Init();
    
        while (1)
        {
            // 主循环
        }
    }
    

    注意:这部分代码主要用于程序运行,烧录过程由 IDE 自动处理。


    ✅ 四、总结

    | 步骤 | 内容 | |------|------| | 1 | 确认 Boot0 = 1,Boot1 = 0 | | 2 | 检查 ST-Link 接线 | | 3 | 设置调试选项(Clock Source 为 Internal) | | 4 | 更新 ST-Link 固件 | | 5 | 测试其他 ST-Link 或开发板 |


    ✅ 五、附加建议

    • 如果你使用的是 江科大视频,建议仔细对照视频中的 Boot 引脚设置调试配置
    • 有些开发板(如 STM32F103C8T6)默认 Boot0 接地,但调试时需要将其拉高;
    • 如果你仍然无法解决,可以贴出你使用的 STM32 型号和 ST-Link 版本,我可以帮你进一步分析。

    如有更多细节(如开发板型号、使用的 IDE、ST-Link 的版本等),欢迎继续提问,我会为你提供更精准的帮助。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月25日