请教探索者“实验34 FLASH模拟EEPROM实验”

2019-07-20 12:17发布

对使用stm32的flash作为数据储存的方式有如下疑问:1.手册中如是描述:
在对 STM32F4xx 的 Flash 执行写入或擦除操作期间,任何读取 Flash 的尝试都会导致总线
阻塞。只有在完成编程操作后,才能正确处理读操作。这意味着,写/擦除操作进行期间不能
从 Flash 中执行代码或数据获取操作


2.代码中是这么写的
                FLASH->CR|=1<<16;        //开始擦除                  
                res=STMFLASH_WaitDone(200000);//等待操作结束,最大2s  

其中函数在不断查询状态
u8 STMFLASH_WaitDone(u32 time)
{
        u8 res;
        do
        {
                res=STMFLASH_GetStatus();
                if(res!=1)break;//非忙,无需等待了,直接退出.
                delay_us(10);
                time--;
         }while(time);
         if(time==0)res=0xff;//TIMEOUT
         return res;
}



3. 那么问题来了
首先,这个例程中应该是在flash中运行代码的
那么在执行过
FLASH->CR|=1<<16;        //开始擦除       
之后,继续要执行
res=STMFLASH_WaitDone(200000);//等待操作结束,最大2s  
那么此时取命令、执行代码,不都是在flash中进行的吗?
那岂不是违反了不能从 Flash 中执行代码或数据获取操作。这个要求?




实在是不懂,请指教!谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。