本帖最后由 hoop 于 2022-3-19 13:33 编辑
Questions:有零等待区的MCU系列,在擦除零等待区时需注意事项? Answer: FLASH擦除操作,如果满足以下两个条件会导致程序跑飞出错: 1. 擦除的是零等待区; 2. 擦除过程中CPU有以下顺序的动作,零等待区取指令->非零等待区取指令。 例如:擦除一个零等待区扇区,擦除开始后,程序会去检查FLASH忙的标志(检查标志这句代码位于零等待区),然后中断正常响应,如果中断函数有非零等待区的代码,此时就会出错。 解法1:调用擦除操作前后,操作中断使能的开关,如下: __disable_irq(); Erase(); __enable_irq(); |
解法2:保证芯片在擦除期间所有执行的函数代码都位于零等待区。 类型:MCU应用 适用型号:AT32F413, AT32F403, AT32F403A, AT32F407 主功能:FLASH 次功能:无 |