手册和原子哥视频中扇区擦除的步骤如下:
1.检查 FLASH_SR 寄存器中的 BSY 位,以确认当前未执行任何 Flash 操作
2. 在 FLASH_CR 寄存器中,将 SER 位置 1,并从主存储块的 12 个 (STM32F405xx/07xx 和 STM32F415xx/17xx) 或 24 个 (STM32F42xxx 和 STM32F43xxx) 扇区中选择要擦除的扇区 (SNB)
3. 将 FLASH_CR 寄存器中的 STRT 位置 1
4. 等待 BSY 位清零
但是例程中不管是擦除还是写都没有对BSY位进行判断,而是使用了FLASH_DataCacheCmd()这么一个函数,实在是不懂,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
额,懂了,判断状态就是判断是否是BYS位,
还有个问题,原子哥,ACR上的LATENCY有什么作用不需要设置吗?
---------------------------------
还有两个问题一并问了吧,
1.寄存器版本擦错扇区操作时为何要先等待2S再判断状态,而不是先判断状态再决定是否等待呢?
2.擦除扇区时为何要选择编程宽度?
---------------------------------
1,没有2秒之说.
2,看STM32参考手册.
一周热门 更多>