关于STM32单片机不能用JLink和ST-Link下载程序的原因分析

在STM32单片机编程时遇到无法使用JLink和ST-Link下载程序的问题,经分析发现是由于读保护功能启用导致。解决方案包括通过ST-Link Utility调整选项字节的读保护等级至level0,或使用JLink的"unsecure chip"功能。前提条件是下载器能够读取ARM Core。

最近一段时间给STM32单片机下载程序的时候,有的时候出现下载不了的情况,尝试过JLink+MDK,JLink+JFlash,

ST-Link+MDK,ST-Link+ST-LINK Utility均不能实现程序下载。故障截图如下:

 

在本人当前的应用场景下,是因为STM32单片机的读保护功能启用了,通过ST-Link+ST-LINK Utility的Target-Option Bytes菜单查看读保护等级。当前的应用场景下,因为读保护功能设置为了level 1导致下载不了,如下图所示:

 

 

解决办法:

(1)通过ST-Link+ST-LINK Utility将选项字节中的读保护等级设置为level0;

(2)通过JLink+JFlash,“unsecure chip”。

这两种办法的前提条件是,下载器可以读到ARM Core。

### 故障排除方法 #### 1. 检查硬件连接 确保ST-LinkSTM32F103C8T6之间的连接正确无误。以下是常见的接线方式: - **SWCLK** 引脚连接到 ST-Link 的 SWCLK 引脚。 - **SWDIO** 引脚连接到 ST-Link 的 SWDIO 引脚。 - **GND** 引脚连接到 ST-Link 的 GND 引脚。 - **VCC** 引脚连接到 ST-Link 的 VCC 引脚(如果需要供电)[^1]。 #### 2. 检查电源复位 确保STM32F103C8T6的电源稳定,并且复位电路正常工作。可以尝试以下步骤: - 确保STM32F103C8T6的电源电压在正常范围内(通常为3.3V)。 - 按住复位按钮,点击ST-Link Utility上的下载按钮,然后松开复位按钮。注意先后顺序,确保复位按钮在下载开始时按下,并在下载开始后立即松开[^4]。 #### 3. 检查驱动程序 确保ST-Link的驱动程序已正确安装。可以尝试以下步骤: - 重新安装ST-Link的驱动程序。可以使用正点原子提供的驱动程序进行安装。 - 确保设备管理器中没有黄色感叹号或问号,表示驱动程序已正确安装[^3]。 #### 4. 检查软件设置 确保STM32 ST-LINK Utility的设置正确。可以尝试以下步骤: -STM32 ST-LINK Utility中,选择正确的MCU型号为STM32F103C8。 - 确保在C/C++选项卡中,`define`的内容修改为`STM32F10X_MD``USE_STDPERIPH_DRIVER`[^3]。 #### 5. 检查SWD接口的电平 确保SWDIOSWCLK引脚的电平正确。可以尝试以下步骤: - 在硬件上,SWDIO与SWCLK在芯片内部有可能是默认进行电平拉低,而在连接JLINK时没有进行电平的拉高。这种情况就切换到了ST-LINK的模式。要切换至JLINK模式,需将SWDIO与SWCLK两个引脚进行10K电阻接到3.3V拉高电平[^5]。 #### 6. 使用其他工具进行验证 如果上述方法都无法解决问题,可以尝试使用其他工具进行验证: - 使用Keil5 MDK通过ST-Link V2仿真器进行烧录,确保Keil5的JLINK版本不过低,否则也会导致JLINK连接不上,同时也会导致ST-LINK不能进行debug代码[^5]。 ### 示例代码 以下是一个简单的代码示例,用于验证STM32F103C8T6的基本功能: ```c #include "stm32f10x.h" int main(void) { // 初始化系统时钟 SystemInit(); // 初始化GPIO RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); // 点亮LED GPIO_SetBits(GPIOC, GPIO_Pin_13); while (1) { // 主循环 } } ``` ### 相关问题 1. 如何使用ST-Link V2进行STM32F103C8T6的调试? 2. 如何在Keil5中配置STM32F103C8T6的工程模板? 3. 如何解决STM32F103C8T6的电源不稳定问题? 4. 如何在STM32 ST-LINK Utility中找到生成的hex文件? 5. 如何验证STM32F103C8T6的SWD接口是否正常工作?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值