请教探索者“实验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 中执行代码或数据获取操作。这个要求?




实在是不懂,请指教!谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
qd0090
1楼-- · 2019-07-20 12:32
 精彩回答 2  元偷偷看……
qd0090
2楼-- · 2019-07-20 16:39
 精彩回答 2  元偷偷看……
qd0090
3楼-- · 2019-07-20 22:14
请教各位高手
lzq12
4楼-- · 2019-07-21 03:30
 精彩回答 2  元偷偷看……
wlq19911021
5楼-- · 2019-07-21 08:05
错,暂停程序是,阻塞内存是不存在的,是为了简化处理过程而产生的,可通过某些方式,让中断等,不暂停工作,不过改起来非常麻烦,没人那样用,有那工夫,直接加个SPI  FLASH不好多啦
qd0090
6楼-- · 2019-07-21 12:35
wlq19911021 发表于 2017-8-26 05:19
错,暂停程序是,阻塞内存是不存在的,是为了简化处理过程而产生的,可通过某些方式,让中断等,不暂停工作 ...

哥们你的语言太简练了,看不懂啊

一周热门 更多>