打印

stm32F10x flash->CR寄存器STRT位置1操作竟然占用6ms??

[复制链接]
3016|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
simple_head|  楼主 | 2009-5-27 15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按照stm32F10x flash编程手册的标准擦除方法进行擦除,在对flash->CR寄存器STRT位置1后,查询flash->SR的BSY位,等待其被清0.
   

我碰到的问题是:
    CR寄存器STRT位置1操作持续6ms,6ms后擦除操作完成,再查询flash->SR的BSY位已没有意义。在CR寄存器STRT位置1操作的6ms中,定时中断无法进入,整个系统似乎被CR寄存器STRT位置1操作完全占用,连中断请求都被屏蔽。

我进行的flash操作完全按照手册规定进行,包括lock, unlock等。所有flash的擦除和编程操作结果都正确,只是擦除和编程操作中定时中断无法进入,进而跟踪分析发现:flash->CR寄存器STRT位置1操作占用6ms,并屏蔽中断。

请问各位大虾,如何能够让我在flash擦除编程中可以进入定时中断??
沙发
香水城| | 2009-5-27 17:34 | 只看该作者

这是正常现象,因为只有一套FLASH控制器

当做擦除或编程时,控制器不能再从FLASH读数据,当然不能响应中断。

如果一定要在此期间进行某种操作,只能把程序搬到RAM中运行,需要中断响应时,则要把中断向量表也放到RAM中。

使用特权

评论回复
板凳
simple_head|  楼主 | 2009-5-28 10:50 | 只看该作者

难道擦出1个page,整个flash都受影响吗?

难道擦出1个page,整个flash都受影响吗?

使用特权

评论回复
地板
香水城| | 2009-5-28 11:01 | 只看该作者

对Flash的写或擦除都会使对整个Flash的其它操作暂停

下面是STM32编程手册中的说明:

在执行闪存写操作时,任何对闪存的读操作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操作时,不能进行代码或数据的读取操作。

进行闪存编程操作时(写或擦除),必须打开内部的RC振荡器(HSI)。

闪存存储器可以用ICP或IAP方式编程。


原文如下:
相关链接:http://www.st.com/stonline/products/literature/pm/13259.pdf

使用特权

评论回复
5
simple_head|  楼主 | 2009-5-28 12:45 | 只看该作者

感谢回复

感谢您的回复!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

117

帖子

0

粉丝