STM32 读保护功能和清除读保护功能设置.docxVIP

STM32 读保护功能和清除读保护功能设置.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM32 读保护功能和清除读保护功能设置

1、STM32对内部Flash的保护措施??所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。?1)、读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:通过调试器(JTAG或SWD);从RAM中启动并执行的程序;?2)、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。??读与写设置的效果见下表:?读保护写保护?对Flash的操作功能?有效 有效 CPU只能读,禁止调试和非法访问。?有效 无效 CPU可以读写,禁止调试和非法访问,页0~3为写保护。?无效 有效 CPU可读,允许调试和非法访问。?无效 无效 CPU可以读写,允许调试和非法访问。2、当Flash读保护生效时,CPU执行程序可以读受保护的Flash区,但存在两个例外情况:?1)、调试执行程序时;?2)、从RAM启动并执行程序时?STM32还提供了一个特别的保护,即对Flash存储区施加读保护后,即使没有启用写保护,Flash的第 0 ~ 3 页也将处于写保护状态,这是为了防止修改复位或中断向量而跳转到RAM区执行非法程序代码。3、Flash保护相关函数?FLASH_Unlock();???//Flash解锁?FLASH_ReadOutProtection(DISABLE);??//Flash读保护禁止??FLASH_ReadOutProtection(ENABLE);???//Flash读保护允许4、stm32置读保护跟清读保护操作?功能:读保护设置后将不能读出flash?的内容;当解除读保护的时候stm32?会自动擦出整篇flash;?读保护设置:在程序的开头加入“读保护”代码,即实现了读保护功能;(每次程序运行先开保护)?解除读保护:解除读保护可以设置在按键里面,方便实现解锁,也不可不设按键在RAM中执行程序再清除读保护;?(1)设置读保护:?int?main(void){?....??if(FLASH_GetReadOutProtectionStatus()?!=?SET)?{?//FLASH_Unlock();不解锁FALSH也可设置读保护????FLASH_ReadOutProtection(ENABLE);?}?......?while(1)?{?.....?}}?这个写到程序当中并执行过后,使用j-link就不能‘读出’程序了,就是‘读保护’了!没有使用此程序可以读出下载到芯片中的程序,但是如果使用了此程序就无法读出程序了。但是也无法再次烧写新的程序到芯片中了(要测试请慎重!!!!!!)?可以在主程序当中设置一按键专门清除“读保护”,一旦按下按键则清除“读保护”时芯片可以重新被烧写。?(2)解除读保护:在程序中的某个操作中(如按键等)加入如下代码,执行后代码自己杀死了自己!if(FLASH_GetReadOutProtectionStatus()?!=?RESET){FLASH_Unlock();FLASH_ReadOutProtection(DISABLE);}?这些函数在stm32f10x_flash?里面,注意:调用上面这个库的时候需在#include?stm32f10x_flash.h前加#define?_FLASH_PROG;否则报(没有定义)错。?如果你没有做按键清除读保护这一步还有方法二补救:专门写一个清除“读保护”程序,使用RAM中运行程序的方法,运行此程序解锁“读保护”,执行后,FLASH会自动全部擦除。代码如下:int?main(void){Chinp_Init();FLASH_Unlock();FLASH_ReadOutProtection(DISABLE);?}※对于在RAM中运行程序,说明如下:(1)我使用IAR?+?J-Link,不用把Boot0和boot1脚设置成从RAM启动也可在RAM中调试(我是设置成从FLASH启动)。(2)在IAR环境中设置Link文件为lnkarm_ram.xcl(3)Debuger选项Download?tab中勾全部去掉。按上面设置完成后,按Debug按钮,执行上面程序,读保护可解除。?*************************华丽丽的分割线***********************************************?if?(FLASH_GetReadOutProtectionStatus()?==?RESET)?{FLASH_Unlock();FLASH_ReadOutProtection(ENABLE);?}******

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档