STM32F4(Flash读保护)

发布者:760802csy最新更新时间:2018-04-23 来源: eefocus关键字:STM32F4  Flash读保护 手机看文章 扫描二维码
随时随地手机看文章

1,目的

        在实际的产品发布中,如果不对储存在单片机Flash中的程序做一些保护的话,就有可能被一些不法公司,通过仿真器(J-Link,ST-Link等)把Flash中的程序读取回来,得到bin文件或hex文件,然后去山寨产品。所以我们需要对程序进行保护,一种比较简单可靠的方法就是把Flash设置成读保护。


2,开发环境

        1,适用芯片:STM32F4全部芯片

        2,固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0

        3,IDE:MDK517


3,程序源码


/**************************************************************** 

 * Function:    Flash_EnableReadProtection 

 * Description: Enable the read protection of user flash area. 

 * Input: 

 * Output: 

 * Return:      1: Read Protection successfully enable 

 *              2: Error: Flash read unprotection failed 

*****************************************************************/  

uint32_t Flash_EnableReadProtection(void)  

{  

  /* Returns the FLASH Read Protection level. */  

  if( FLASH_OB_GetRDP() == RESET )  

  {  

    /* Unlock the Option Bytes */  

    FLASH_OB_Unlock();  

      

    /* Sets the read protection level. */  

    FLASH_OB_RDPConfig(OB_RDP_Level_1);  

      

    /* Start the Option Bytes programming process. */    

    if (FLASH_OB_Launch() != FLASH_COMPLETE)  

    {  

      /* Disable the Flash option control register access (recommended to protect  

         the option Bytes against possible unwanted operations) */  

      FLASH_OB_Lock();  

        

      /* Error: Flash read unprotection failed */  

      return (2);  

    }  

    

    /* Disable the Flash option control register access (recommended to protect  

       the option Bytes against possible unwanted operations) */  

    FLASH_OB_Lock();  

  

    /* Read Protection successfully enable */  

    return (1);  

  }  

    

  /* Read Protection successfully enable */  

  return (1);  

}  

  

/**************************************************************** 

 * Function:    Flash_DisableReadProtection 

 * Description: Disable the read protection of user flash area. 

 * Input: 

 * Output: 

 * Return:      1: Read Protection successfully disable 

 *              2: Error: Flash read unprotection failed 

*****************************************************************/  

uint32_t Flash_DisableReadProtection(void)  

{  

  /* Returns the FLASH Read Protection level. */  

  if( FLASH_OB_GetRDP() != RESET )  

  {  

    /* Unlock the Option Bytes */  

    FLASH_OB_Unlock();  

      

    /* Sets the read protection level. */  

    FLASH_OB_RDPConfig(OB_RDP_Level_0);  

      

    /* Start the Option Bytes programming process. */    

    if (FLASH_OB_Launch() != FLASH_COMPLETE)  

    {  

      /* Disable the Flash option control register access (recommended to protect  

         the option Bytes against possible unwanted operations) */  

      FLASH_OB_Lock();  

        

      /* Error: Flash read unprotection failed */  

      return (2);  

    }  

    

    /* Disable the Flash option control register access (recommended to protect  

       the option Bytes against possible unwanted operations) */  

    FLASH_OB_Lock();  

  

    /* Read Protection successfully disable */  

    return (1);  

  }  

    

  /* Read Protection successfully disable */  

  return (1);  

}  


关键字:STM32F4  Flash读保护 引用地址:STM32F4(Flash读保护)

上一篇:STM32F4(用SysTick实现Delay函数)
下一篇:STM32F4(USART+DMA+动态内存)

推荐阅读最新更新时间:2024-03-16 16:00

STM32F407系统时钟配置
STM32F407系统时钟配置 时钟树 方法一,采用官方库提供的配置(这里外部晶振25MHz,系统配置为168MHz) STM32F4启动与STM32F10X不同,时钟已经默认配置好 启动代码,文件:startup_stm32f4xx.s Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main
[单片机]
<font color='red'>STM32F4</font>07系统时钟配置
第18章 STM32F429的GPIO应用之跑马灯
18.1 初学者重要提示 学习本章节前,务必保证已经学习了第15,16和17章。 虽然是跑马灯的初级例程,但有必要掌握程序的基本设计框架,后面的例子都是建立在这个框架的基础上。 LED不是用CPU的IO直接驱动,而是由74HC574驱动的,74HC574是一个8路并口缓冲器,挂在FMC总线上,实现IO扩展。也许初学者会问为什么要做IO扩展,不是已经用了208脚的STM32F429BIT6吗?因为开发板使用了32位SDRAM和RGB888硬件接口,消耗IO巨大,所以必须得扩展了。 对于初学者来说,仅需掌握LED驱动的实现方法和对应的API调用即可,需要深入的理解IO扩展部分,会在后面的节进行详细讲解。 FMC总线扩展
[单片机]
第18章 <font color='red'>STM32F4</font>29的GPIO应用之跑马灯
ChibiOS/RT移植到STM32F407
找到STM32F407的demos程序(chibiosdemosSTM32RT-STM32F407-DISCOVERY) /* * This is a periodic thread that does absolutely nothing except flashing * a LED. */ static THD_WORKING_AREA(waThread1, 128); static THD_FUNCTION(Thread1, arg) { (void)arg; chRegSetThreadName( blinker ); while (true) { palSetPad(GPIOD, GPIOD_L
[单片机]
STM32f4---串口通信实验代码(02)
介绍完了这两个函数,我们回到main.c,对于main.c前面引入的头文件为了篇幅考虑,我们后面的实验不再列出,详情请参考我们实验代码即可。主函数代码如下: int main(void) { u8 t,len; u16 times=0; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); //延时初始化 uart_init(115200); //串口初始化波特率为115200 LED_Init(); //初始化与 LED连接的硬件接口 LED0=0; //先点亮红灯 wh
[单片机]
STM32F4的4k备份SRAM
1、基地址: #define BKPSRAM_BASE ((uint32_t)0x40024000) 2、大小为4k 备份域还包括仅可由 CPU 访问的 4 KB 备份 SRAM,可被 32 位、16 位、8 位访问。使能低 功耗备份调压器时,即使处于待机或 VBAT 模式,备份 SRAM 的内容也能保留。一直存在 VBAT 时,可以将此备份 SRAM 视为内部 EEPROM。 3、 4、需要掉电保存参数必须保存到backup SRAM中,如下: *(__IO uint32_t *) (BKPSRAM_BASE + offset) = 要保存的参数; 其中BKPSRAM_BASE为backu
[单片机]
<font color='red'>STM32F4</font>的4k备份SRAM
STM32F4discovery_CDC_Device数据传输的一步步实现
1. 需求 某项目需要单片机把ADC数据上传到电脑。方法有两种:1、USB;2、以太网。百度必应了一番,发现有人用过NXP的LPC的一款带USB2.0 HighSpeed phy的片子,但是采用BGA封装,开发难度上了一个层次。这两年内使用的STM32F1、F4比较多,对其开发比较熟悉,资料也丰富。因此决定使用STM32F4跑一下CDC_Device例程,调一下这部分的数据传输。 2. 环境 2.1 软件 Win7、Atollic TrueSTUDIO for STM32 STM32CubeMX v4.27.0,装上STM32CubeF4 Firmware Package V1.21.0 2.2 硬件 我采用的是STM
[单片机]
<font color='red'>STM32F4</font>discovery_CDC_Device数据传输的一步步实现
STM32F4硬件IIC+DMA使用
1.STM32硬件IIC一直被大家说存在问题,实际测试发现确实是有这种情况,借助网上很多人的经验,终于把硬件IIC写完了。 2.使用DMA时,发现发送数据(写寄存器)时序和实际不符,比如发送4字节数据时,如果DMA缓冲区单字节长度配置为4,则实际时序发现只有三个,需要将DMA缓冲区单字节长度配置为5,才可以正常使用 3.当然,如果使用STM32的HAL库,这些问题其实都可以避免,因为底层ST已经做了超时及错误的处理。 4.使用的IIC为自定义的格式, 写寄存器操作为: START+ACK(从机的ACK信号)+IIC设备地址+(从机的ACK信号)+START+ACK(从机的ACK信号)+IIC写寄存器地址+ACK
[单片机]
STM32F407串口的基本使用
串口 串口在嵌入式系统中是一个非常重要的外设,它通信方式简单在软件开发阶段常用作调试工具。本示例中我们只实现串口的输出功能,同时还 会实现一个具有printf功能输出接口。这样咱们以后的例程中就有了一个简单的调试工具。 1. STM32串口简介 STM32的串口功能非常丰富,它可以支持双全工异步通信、LIN、IrDA、智能卡协议、单线半双工通信、支持调制解调器操作。 接下来我们将对使用STM32的串口应该进行的哪些设置给予简单说明,并对需要设置的寄存器给予简单介绍。要使用串口除了应对串口的波特率等进行配置外还需要对串口用到I/O进行设置,下面将分步进行介绍: 1) 串口时钟使能 STM32可以对每个外设进行单独的时钟控制,因此配置
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved