我正在使用 X-CUBE-CLASSB 包和 IAR EWARM IDE V8.32.4 在 MCU
STM32G070CB 上开发家用电器应用程序。我使用 NUCLEO-G070RB 进行早期开发。该应用程序运行良好,直到我在选项字节中打开 SRAM 奇偶校验。
启用 SRAM 奇偶校验:
应用程序在启动时调用 __iar_data_init3 初始化 RAM 变量时跳转到 hart 故障处理程序然而,对我来说更糟糕的是,当禁用 SRAM 奇偶校验(恢复选项字节)时,应用程序不再运行。
SRAM 奇偶校验禁用:
STL_StartUp 方法从启动时调用,它执行启动自检,包括看门狗自检,它执行由两个看门狗中的每一个调用的复位(总共两次复位)。然而,尽管 nBOOT_SEL = 1 和 nBOOT0 = 1 的设置应确保从主闪存 (0x08000000) 启动,但 MCU 未正确复位,程序反而丢失在系统闪存 (0x1FFF 0000 - 0x1FFF 7000) 的某个位置BOOT0 引脚状态。
现在我有两个具有相同设置(比较选项字节内存位置)的 MCU,一个工作正常而第二个不工作。强制 MCU 再次工作的唯一方法是设置 BOOT_LOCK = 1。
这是什么原因?