打印
[开发资料]

CW32R030的FLASH擦写保护

[复制链接]
289|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CW32R030 通过设置擦写锁定寄存器FLASH_PAGELOCK 来实现FLASH 页面的擦写锁定,处于锁定状态的页面不
能进行页擦除或写操作。
CW32R030 内部FLASH 存储器被划分为128 页,每8 页对应擦写锁定寄存器FLASH_PAGELOCK 的1 个LOCKx
锁定位。LOCKx 域共16 位,可实现全部128 页FLASH 存储器的锁定保护。擦写锁定寄存器FLASH_PAGELOCK
的各位域与FLASH 锁定页面的对应关系如下表所示:



对 FLASH 进行页擦除和写操作时,必须先通过设置对应的FLASH_PAGELOCK.LOCKx 位域为1 来解锁对应页面。
解锁操作示例如下:
锁定Page0-Page7 代码示例:
CW_FLASH->PAGELOCK = 0x5A5A 0000 | ( CW_FLASH->PAGELOCK & 0x0000 FFFE );
解锁Page32-Page39 代码示例:
CW_FLASH->PAGELOCK = 0x5A5A 0000 | ( CW_FLASH->PAGELOCK | 0x0000 0010 );
注:
FLASH_PAGELOCK 寄存器具有KEY 保护特性,写入的数据高16bit 数据必须是0x5A5A,否则无法写入。
对未解锁的FLASH 页直接执行页擦除或者写操作,会操作失败并产生中断标志。

使用特权

评论回复
沙发
Bowclad| | 2023-5-8 23:43 | 只看该作者
跨页擦除怎么操作啊?

使用特权

评论回复
板凳
pssyx| | 2023-5-9 09:30 | 只看该作者
本帖最后由 pssyx 于 2023-5-9 09:31 编辑
Bowclad 发表于 2023-5-8 23:43
跨页擦除怎么操作啊?

跨页擦除操作同理,先解锁,再擦除,最后加锁。请参考LIB中的FLASH例程,建议直接调用FLASH操作的Lib函数,其中擦除函数的原型为:/**
* @brief 擦除从STARTADDR到ENDADDR所在的页面,返回0x00代表成功,非0代表失败
*
* @param StartAddr   : 0x00000000 - 0x0000FFFF
* @param EndAddr     : 0x00000000 - 0x0000FFFF
* @return uint8_t    :错误返回0x80,正确返回0x00
*/
uint8_t FLASH_ErasePages(uint32_t StartAddr, uint32_t EndAddr)。

使用特权

评论回复
地板
zhanan| | 2023-5-10 14:56 | 只看该作者
Bowclad 发表于 2023-5-8 23:43
跨页擦除怎么操作啊?

擦完一页,擦下页

使用特权

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

本版积分规则

228

主题

1684

帖子

3

粉丝