使用stm32f4片上flash存储数据不能执行代码吗?

2019-07-14 15:24发布

大家好:
   使用STM32f407,希望使用flash的剩余空间来存放数据。希望片上flash可以像片外flash一样任意读写。
   看了参考手册,上面如是描述:
   “在对 STM32F4xx 的 Flash 执行写入或擦除操作期间,任何读取 Flash 的尝试都会导致总线
阻塞。只有在完成编程操作后,才能正确处理读操作。这意味着,写/擦除操作进行期间不能
从 Flash 中执行代码或数据获取操作。”

    我有很大疑惑,
   1.我使用片上flash作为代码存储空间,
   2.stm32执行代码,是需要从flash上取指令,然后分析指令,进行操作
   3.当我执行完擦除/写操作的时候,无论是查询flash状态寄存器,或是执行中断,都是需要从flash读取代码的
   那么按照手册的说法,岂不是不能执行代码???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
oqw1
2019-07-15 05:01
谢谢楼上各位的帮助,我有些理解了。
我之前理解是“总线阻塞”是不能接受的,arm会挂掉,按照诸位的解释,“总线阻塞”仅仅是等待,就像是“堵车”一样,等等就好了,并不是“事故”
那么正确的理解是不是这样:
在写/擦除完成之前,如果有程序需要执行(事实上我认为一定有程序需要执行,因为即使是等待,或是查询flash的寄存器,也是需要执行代码的),那么会造成flash总线阻塞,此时所有的代码都无法执行,直到“阻塞”结束,arm再去执行下一条指令。

一周热门 更多>