stm32f4 设置读写保护
时间: 2023-09-04 18:10:36 浏览: 169
为了保护STM32F4芯片的代码和数据不被非法读写,可以使用STM32F4芯片的读写保护功能。下面是STM32F4芯片的读写保护设置方法:
1. 设置读保护
(1)打开Flash读保护功能
通过设置FLASH_CR寄存器的PRSTRT位和PRG位可以打开Flash读保护功能。具体代码如下:
```
FLASH_Unlock(); //解锁Flash
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); //清除Flash标志位
FLASH_OB_Unlock(); //解锁Option Byte
FLASH_OB_RDPConfig(0x80); //设置Flash读保护级别为Level 1
FLASH_OB_Launch(); //启动Option Byte编程
FLASH_OB_Lock(); //锁定Option Byte
FLASH_Lock(); //锁定Flash
```
(2)禁止Flash读保护功能
通过设置FLASH_CR寄存器的PRG位可以禁止Flash读保护功能。具体代码如下:
```
FLASH_Unlock(); //解锁Flash
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); //清除Flash标志位
FLASH_OB_Unlock(); //解锁Option Byte
FLASH_OB_RDPConfig(0x00); //设置Flash读保护级别为Level 0
FLASH_OB_Launch(); //启动Option Byte编程
FLASH_OB_Lock(); //锁定Option Byte
FLASH_Lock(); //锁定Flash
```
2. 设置写保护
(1)打开Flash写保护功能
通过设置FLASH_CR寄存器的WRP位可以打开Flash写保护功能。具体代码如下:
```
FLASH_Unlock(); //解锁Flash
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); //清除Flash标志位
FLASH_WRPConfig(FLASH_WRProt_AllPages, ENABLE); //设置Flash写保护
FLASH_Lock(); //锁定Flash
```
(2)禁止Flash写保护功能
通过设置FLASH_CR寄存器的WRP位可以禁止Flash写保护功能。具体代码如下:
```
FLASH_Unlock(); //解锁Flash
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); //清除Flash标志位
FLASH_WRPConfig(FLASH_WRProt_AllPages, DISABLE); //禁止Flash写保护
FLASH_Lock(); //锁定Flash
```
以上就是STM32F4芯片的读写保护设置方法。需要注意的是,一旦设置了读写保护,就无法再对Flash进行编程或擦除,因此在设置之前一定要慎重考虑。
阅读全文