123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /**
- ******************************************************************************
- * @file flash_read_protection.c
- * @author Damon
- * @version V1.0
- * @date 2018/7/11
- * @brief flash读保护
- ******************************************************************************
- * @attention
- * 支持stm32f103xxx
- * 本功能模块为内部flash使能读保护功能,防止外部非法读取flash。读保护不影响内部总线操作flash,bootloader升级可正常进行。
- *
- * 添加此模块时注意:
- * 1、在stm32f1xx_hal_conf.h 文件中打开宏定义 #define HAL_FLASH_MODULE_ENABLED ;
- * 2、在Drivers/STM32F1xx_HAL_Driver组中添加文件 stm32f1xx_hal_flash.c、stm32f1xx_hal_flash_ex.c;
- * 3、将文件flash_read_protection.c添加到工程中;
- * 4、在主循环前调用函数Flash_ReadProtection(void);
- ******************************************************************************
- */
- #include "flash_read_protection.h"
- /******************************************************************************
- * @Function: void Flash_ReadProtection(void)
- * @Discrible: flash读保护使能
- * @Param:
- * @Return:
- * @Others: 此函数执行,如果flash读保护未使能,则使能读保护
- ******************************************************************************
- * @Recode date version author modify
- * ------------------------------------------------------------------
- * 20180711 V1.0 Damon Create
- *
- *******************************************************************************/
- void Flash_ReadProtection(void)
- {
- /*配置参数到结构体*/
- FLASH_OBProgramInitTypeDef OBInit;
- OBInit.OptionType = OPTIONBYTE_RDP; //读保护
- OBInit.RDPLevel = OB_RDP_LEVEL_1; //level0:无保护,level1:一级读保护,可软件恢复
-
- /*读取选项字寄存器标志位,如果没有使能Flash读保护*/
- if( READ_BIT(FLASH->OBR, FLASH_OBR_RDPRT) != FLASH_OBR_RDPRT)
- {
- /*解锁flash相关寄存器*/
- HAL_FLASH_Unlock();
- /*解锁选项字寄存器*/
- HAL_FLASH_OB_Unlock();
-
- /*写参数到选项字寄存器*/
- HAL_FLASHEx_OBProgram(&OBInit);
-
- HAL_FLASH_OB_Lock();
- HAL_FLASH_Lock();
-
- }
- }
|