我也很困惑。但我测试at32f403A,擦除扇区40ms期间是可以中断响应的,可以读闪存呀。一下是我在网上搜的:
https://www.sekorm.com/faq/122694.html
AT32F403A在操作零等待Flash区域有哪些需要注意的点?
KenPeng Lv5 (0)
FLASH擦除操作,如果满足以下两个条件会导致程序跑飞出错:
1. 擦除的是零等待区
2. 擦除过程中CPU有以下顺序的动作,零等待区取指令->非零等待区取指令。
例如:擦除一个零等待区扇区,擦除开始后,程序会去检查FLASH忙的标志(检查标志这句代码位于零等待区),然后中断正常响应,如果中断函数有非零等待区的代码,此时就会出错
解法1:调用擦除操作前后,操作中断使能的开关,如下:
_disable_irq();
Erase();
_enable_irq();
解法2:保证芯片在擦除期间所有执行的函数代码都位于零等待区
|