FLASH编程过程

FLASH编程过程

1.检查FLASH_CR的LOCK是否解锁,如果没有则先解锁。
2.检查FLASH_SR寄存器的BSY位,以确认没有其他正在进行的编程操作
3.设置FLASH_CR寄存器的PG位为“1”在指定的地址写入编程的半字。
4.等待BSY位变为0
5.读出写入的地址并验证数据。

STM32的FLASH擦除过程

页擦除和整片擦除

页擦除

1.检查FLASH_CR的LOCK是否解锁,如果没有则先解锁。
2.检查FLASH_SR寄存器的BSY位,以确认没有其他正在进行的编程操作
3.设置FLASH_CR寄存器的PER位为“1”.
4.用FLASH_AR寄存器选择要擦除的页
4.用FLASH_CR寄存器的STRT位为“1”
5.设置FLASH_CR寄存器的STRT位为“1”.
6.等待BSY位变为“0”
7.读出被擦除的页并做验证
flash_status flash_erasepage(unit32_t page_Address)
flash_status flash_eraseallpages(void)
flash_status FLASH_ERAseOPtionBytes(void)

FLASH全片擦除

1.检查FLASH_SR寄存器的BSY位,以确认没有其他正在进行的编程操作
2.设置FLASH_CR寄存器的MER位为“1”.
3.设置FLASH_CRR寄存器的STRT为1
4.等待BSY为0
5.读出所有页并验证

在这里插入图片描述
programoptionbyte编程选项字节
flash_erasepage页擦除 写入AR寄存器
flash_eraseallage全片擦除
flash_eraseOptionBytes擦除选项字节
flash_GetStatus编程的状态
flash_WaitForlastoperation等待上次操作 等待SR=0

总结

1.锁定解锁函数
对FLASH进行写操作前必须先解锁,解锁操作也就是必须在
FLASH_KEYR寄存器写入特定的序列(KEY1和KEY2),固件函数实现:void FLASH_Unlock(void)
同样的道理,在对FLASH写操作完成之后,我们要锁定FLASH
VOID FLASH_Lock(void)
2.写操作函数
固件库提供三个FLASH写函数

FLASH闪存读取

EG:我们从地址addr,读取一个半字(半字为16位,字为32位)
可以通过如下语句读取:data=(vu16)addr

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值