闪存锁的锁定与解除

本文介绍了STM32F10x中如何管理和控制闪存锁。通过解锁函数`FLASH_Unlock()`解锁FPEC模块,需要向FLASH_KEYR寄存器写入特定序列。而锁定函数`FLASH_Lock()`则通过设置CR寄存器的LOCK位来锁定闪存,防止编程和擦除操作。对于STM32F10X_XL设备,该过程同样适用于Bank2。
摘要由CSDN通过智能技术生成

在STM32F10x中,内嵌了闪存存储器Flash,用于在线编程ICP或在程序编程IAP。

FPEC模块又称闪存编程和擦除控制器,包含了7个32位的寄存器,处理闪存的编程和擦除操作。其中有一个FLASH_CR寄存器,称为闪存控制寄存器。

FPEC模块如果被闪存锁锁定,则不能写入FLASH_CR。复位后,闪存锁处于锁定状态。

解锁的方法就是对 FLASH_KEYR 寄存器先写入 0x45670123, 再写入 0xCDEF89AB 。

在 StdPeriph_Driver\stm32f10x_flash.c 中,有一个解锁函数 FLASH_Unlock(),拷贝见下:

/**
  * @brief  Unlocks the FLASH Program Erase Controller.
  * @note   This function can be used for all STM32F10x devices.
  *         - For STM32F10X_XL devices this function unlocks Bank1 and Bank2.
  *         - For all other devices it unlocks Bank1 and it is equivalent 
  *           to FLASH_UnlockBank1 function.. 
  * @param  None
  * @retval None
  */
void FLASH_Unlock(void)
{
  /* Authorize the FPEC of Bank1 Access */
  FLASH->KEYR = FLASH_KEY1;
  FLASH->KEYR = FLASH_K

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值