一、STM32对内部Flash的保护措施  
        所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。 
        1、读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:A、 通过调试器(JTAG或SWD); B、从RAM中启动并执行的程序; 
        2、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。   
   读与写设置的效果见下表:

读保护 写保护 对Flash的操作功能
有效 有效 CPU只能读,禁止调试和非法访问。
有效 无效 CPU可以读写,禁止调试和非法访问,页0~3为写保护。
无效 有效 CPU可读,允许调试和非法访问。
无效 无效 CPU可以读写,允许调试和非法访问。

二、当Flash读保护生效时,CPU执行程序可以读受保护的Flash区,但存在两个例外情况: 
        1、调试执行程序时; 
        2、从RAM启动并执行程序时 
        STM32还提供了一个特别的保护,即对Flash存储区施加读保护后,即使没有启用写保护,Flash的第 0 ~ 3 页也将处于写保护状态,这是为了防止修改复位或中断向量而跳转到RAM区执行非法程序代码。 
三、Flash保护的相关函数 
   FLASH_Unlock();   //Flash解锁 
   FLASH_ReadOutProtection(DISABLE);  //Flash读保护禁止   
   FLASH_ReadOutProtection(ENABLE);   //Flash读保护允许

四、stm32设置读保护和解除读保护操作

1、功能:读保护设置后将不能读出flash中的内容;当解除读保护的时候stm32会自动擦除整个flash,起到保护数据的作用。

2、设置读保护:在程序的开头加入“设置读保护”的代码即可,每次运行代码时都检查一下,如果没有开就打开,如果打开了就跳过。

3、解除读保护:解除读保护可以设置在按键里面,方便实现解锁,也可以设置在命令中。

4、设置读保护的代码:

int main(void)
{...if (FLASH_GetReadOutProtectionStatus()!=SET)  //检查设置读保护与否 { FLASH_Unlock();                           //写保护时可以不用这句话,可用可不用FLASH_ReadOutProtection(ENABLE);          //设置读保护 }...while(1){...}
}

上面的代码执行后,使用j-link就不能读出程序了,实现了代码读保护。

注意:芯片读保护后,无法再次烧写新的程序到flash中,必须要解除读保护才可以,测试需谨慎。

5、解除读保护代码:

void Off_Protect(void) //关闭保护
{ if(FLASH_GetReadOutProtectionStatus() != RESET){FLASH_Unlock(); //不解锁FALSH也可设置读保护,可用可不用FLASH_ReadOutProtection(DISABLE);FLASH_Lock();   //上锁 }
}

程序中设置一个按键或者命令,可以随时解除flash的读保护,让芯片又可以重新烧录程序。如果没有留,还可以专门写一个程序,下载到RAM中去运行,用来解除读保护。执行后,flash会自动全部擦除。

int main(void)
{Chip_Init();FLASH_Unlock(); //不解锁FALSH也可设置读保护,可用可不用FLASH_ReadOutProtection(DISABLE);
}

五、测试

下载并执行设置读保护代码后,再次下载程序显示:

说明已经启动了 读保护,无法再次下载程序了。

通过ST-LINK Utility连接芯片,提示读保护,无法读取flash数据:

这个时候,需要调用解除读保护的代码即可恢复。

转载自:https://wenku.baidu.com/view/539f9f0754270722192e453610661ed9ad5155fb.html?rec_flag=default&sxts=1560582755950

stm32对flash的读写保护与解除相关推荐

  1. 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

    第51章     设置FLASH的读写保护及解除 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  2. 第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

    第51章     设置FLASH的读写保护及解除 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  3. 第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

    原文地址::https://www.cnblogs.com/firege/p/5806164.html 相关文章 1.用J-Flash去掉STM32写保护----http://download.csd ...

  4. 第51章 设置FLASH的读写保护及解除

    转载地址:https://www.cnblogs.com/firege/ 51.1 选项字节与读写保护 在实际发布的产品中,在STM32芯片的内部FLASH存储了控制程序,如果不作任何保护措施的话,可 ...

  5. 第 46 章 设置 FLASH 的读写保护及解除

    46.1 选项字节与读写保护 1.1 选项字节的内容 选项字节是一段特殊的 FLASH 空间,STM32 芯片会根据它的内容进行读写保护配置,选项字节的构成见表选项字节的构成 STM32F103 系列 ...

  6. c语言flash里能存文件吗,STM32内部FLASH打包读写

    最近做到的项目在运行需要把一组uint8_t(unsigned char)的数据进行掉电储存,想到单片机STM32f030f4p6内部flash可以直接由程序操作,写了以下代码用于uint8_t数据打 ...

  7. STM32学习笔记:读写内部Flash。

    首先我们需要了解一个内存映射:    stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同. RAM起始地 ...

  8. stm32内部Flash读写

    文章目录 1.stm32内部flash介绍 2.读写驱动编写 3.源码 上篇文章讲到了STM32来驱动外部flah的操作,flash真是好东西啊,内存大,能存的东西多,这样我们就可以用它来做一些大点的 ...

  9. STM32学习笔记:读写内部Flash(介绍+附代码)

    一.介绍 首先我们需要了解一个内存映射: stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同. RAM起 ...

最新文章

  1. 暴力裁员?小米回应来了,网友表示没毛病!
  2. ASP.NET中String.IndexOf 方法的使用
  3. 畅玩mt3单机游戏服务器维护,【梦幻西游】MT3仿端手工游戏服务端源码[教程+授权物品后台]...
  4. Loj#6247-九个太阳【单位根反演】
  5. jQuery 的各种练习
  6. 阿里系微服务进阶指南
  7. Spring的@Transactional事务注意事项
  8. python做计量经济学的书籍_《计量经济学》教材书单
  9. 第1章 信息系统综合知识
  10. 经济机器是怎样运行的 -- Ray Dalio
  11. 网站常用JSON嵌套形式
  12. 三种方法绘制单位圆-R语言
  13. AnimatedIcon
  14. 生物岛实验室(省属)招聘电子工程师
  15. c语言编程实现简单三子棋游戏
  16. 几分钟计算机不操作就注销,win10系统长时间不操作就自动注销的方案
  17. Tick 数据在技术上究竟是什么东西?
  18. 使用ArchR分析单细胞ATAC-seq数据(第十四章)
  19. 用 Trace32 分析内核死机
  20. 输入月份号,输出该月的英文月名。用指针数组处理

热门文章

  1. delphi中的函数传参如何传枚举参数_shell脚本的函数介绍使用和工作常用案例。建议收藏...
  2. vue 给iframe设置src_vue项目iframe的传值问题
  3. 计算机游戏与动漫设计大赛,我院获第10届中国大学生计算机设计大赛 数字媒体设计类动漫游戏组一等奖...
  4. 脑电分析系列[MNE-Python-5]| Python机器学习算法随机森林判断睡眠类型
  5. oculus rift 开发入门
  6. [unreal4入门系列之三] 初探UE4安装文件目录结构
  7. 打印表单_超市生鲜常用表单,打印出来直接用!(可收藏)
  8. 健身环爆打老头环!超高难度击败boss,宫崎英高估计也想不到,代码+硬件教程已开源...
  9. 最年轻菲尔兹奖得主:我用计算机辅助证明研究“大一统”理论
  10. 马斯克刚失了一枚大火箭!