STM32·

STM32F10x与F40x系列内部FLASH擦除差异

Hugh

Hugh

148 1

在 Keil5 中,当你为 STM32F103 配置下载选项时选择 "按扇区擦除",实际底层操作是 ** 按页 (Page)** 进行的。这是因为 STM32F103 的闪存结构只有页(小容量型号每页 1KB,中 / 大容量型号每页 2KB),没有扇区 (Sector) 的概念。

Keil5 的处理机制

  1. 术语兼容性 Keil5 为了统一不同 STM32 系列的操作界面,使用了 "扇区 (Sector)" 这个更通用的术语,但对于 F103 实际执行的是​页擦除操作​。
  2. 擦除单位
    • 当你选择 "按扇区擦除" 时,Keil 会根据目标地址计算它所在的​​,并按页擦除。
    • 例如,如果你下载的代码从 0x08005000 开始,Keil 会计算该地址所在的页(对于 2KB 页,是第 5 页),然后擦除整个页。
  3. 底层实现 Keil5 通过调用 STM32F103 的闪存编程 API(如 FLASH_ErasePage())来执行擦除操作,这些 API 的最小操作单位是​​。

验证方法

你可以通过以下方式验证:

  1. 查看 Flash 算法 在 Keil5 的 Device Database 中查看 STM32F103 的 Flash 算法文件(通常为 .FLM 格式),会发现其中使用的是页擦除指令。
  2. 调试观察 在下载过程中设置断点,观察 Flash 寄存器(如 FLASH_SR),会发现擦除操作按页进行。
  3. 内存检查 下载后检查未使用的页是否被擦除(所有位变为 0xFF),验证擦除单位是否为页。

注意事项

  1. 地址对齐 确保下载的代码起始地址和长度按页大小对齐(小容量型号 1KB,中 / 大容量型号 2KB),否则可能导致擦除异常。
  2. 与 F4 系列对比
    • STM32F4 系列有真正的扇区(如 16KB/64KB/128KB),"按扇区擦除" 会按扇区执行。
    • F1 系列和 F4 系列的擦除机制不同,需特别注意。
  3. 代码保护 如果启用了读保护 (RDP) 或写保护 (WRP),擦除操作可能受限制,需先解除保护。

总结

在 STM32F103 中:

  • Keil5 的 "按扇区擦除" 实际是按页擦除​。
  • 小容量型号按 1KB 页擦除,中 / 大容量型号按 2KB 页擦除。
  • 这是 STM32 系列内部闪存结构差异导致的术语统一问题。

理解这种底层机制有助于避免因术语混淆导致的调试问题,特别是在跨系列开发时。

相关文章

优先推荐同专题、同标签和同作者内容,补足热门文章。

评论 1

登录 后参与评论

评论 1

kingmingnie
kingmingnie7月16日 15:33

👍