学习STM32F03C8T6遇到的问题及解决方法
Erase Full Chip 会擦除芯片 Flash 中的全部内容,包括用于读写保护的配置信息,从而解除锁定状态,恢复正常烧录功能。只清除保护位,不删除用户程序(仅适用于读保护)当 Keil 中无法正常解锁时使用。
·
文章目录
1. Erase Full Chip 全片擦除(推荐)
- 打开 MDK Keil,打开项目
- 点击魔术棒图标(Options for Target)
- 切换到 “Debug” 选项卡
- 点击 “Settings” 按钮
- 切换到 “Flash Download” 选项卡
- 在 “Download Function” 功能栏勾选 “Erase Full Chip”
- 点击 “OK” 保存设置
- 点击 “Download” 烧录任意程序
原理
Erase Full Chip 会擦除芯片 Flash 中的全部内容,包括用于读写保护的配置信息,从而解除锁定状态,恢复正常烧录功能。
使用 ST-Link Utility 工具(推荐)
操作
- 安装 ST-Link Utility
- 连接 ST-Link 和目标板
- 打开 ST-Link Utility,点击 “Connect”
- 选择 “Target → Option Bytes”
- 将 “Read Out Protection” 设为 “Disable”,点击 “Apply”
- 断开连接,返回 Keil 正常烧录
适用场景
当 Keil 中无法正常解锁时使用
使用 Keil 的 Option Bytes 功能(推荐)
操作
- 在 Keil 中选择 “Target → Option Bytes”
- 在 “Read Out Protection” 下拉菜单中选择 “Disable”
- 点击 “Apply” 和 “OK” 保存
- 重新烧录程序
优势
只清除保护位,不删除用户程序(仅适用于读保护)

PB3默认是JTAG调试接口
PB3 默认是 JTAG 的 JTDO 引脚,需要添加禁用 JTAG 的代码(GPIO_Remap_SWJ_JTAGDisable);
如果不禁用 JTAG,这个引脚无法作为普通 GPIO 使用
void Key_Init(void) {
// 禁用 JTAG,释放 PB3/PB4/PA15 作为普通 GPIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
更多推荐



所有评论(0)