转载自:https://blog.csdn.net/Flyaswing/article/details/90578645

单片机:STM32F030

库:HAL库

目标:在程序软件中修改读保护选项字节,这样程序下载进去之后就自动保护了,不用再在ST-LINK中修改选项字节了

注意事项:写选项字节,除了解锁OB,还要解锁FLASH,开始只解锁OB,没解锁FLASH,一直调试不成功

    static FLASH_OBProgramInitTypeDef OptionsBytesStruct;//解锁FlashHAL_FLASH_Unlock();//解锁选项字节区   HAL_FLASH_OB_Unlock();//读取选项字节设置HAL_FLASHEx_OBGetConfig(&OptionsBytesStruct);//检测RDP的设置是否低于LEVEL 1if(OptionsBytesStruct.RDPLevel < OB_RDP_LEVEL_1){//重写选项字OptionsBytesStruct.OptionType   = OPTIONBYTE_RDP;OptionsBytesStruct.RDPLevel      = OB_RDP_LEVEL_1;  //如果写入没成功if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct) != HAL_OK){//红灯快速闪烁while(1){LED_RED_ON();DelayMs(100);LED_RED_OFF();DelayMs(100);}}else{//红色LED显示短短长LED_RED_ON();DelayMs(200);LED_RED_OFF();DelayMs(200);LED_RED_ON();DelayMs(200);LED_RED_OFF();DelayMs(200);LED_RED_ON();DelayMs(1000);//如果写入成功,则复位加载选项字节HAL_FLASH_OB_Launch();}       }//锁定选项字节HAL_FLASH_OB_Lock();HAL_FLASH_Lock();

转载自http://bbs.21ic.com/icview-186568-1-1.html

首先代码如下
u16 OptionByte_Read1(void)      //两个8字节合成1个16字节使用
{
                u8 high=(*(vu16*)(0x1FFFF804))&0x00ff;//读0x1FFFF804
                u8 low =(*(vu16*)(0x1FFFF806))&0x00ff;//读0x1FFFF806
                return (   (high<<8)+low  );
}
void OptionByte_Write1(u16 data)//两个8字节合成1个16字节使用
{
                FLASH_Unlock();
                FLASH_OB_Unlock();//解锁
                FLASH_EraseOptionBytes();//flash为ff时候才能写入,所以先擦除,网上很多不成功就是没擦除
                FLASH_ProgramOptionByteData(0x1FFFF804,data>>8);    //写0x1FFFF804
                FLASH_ProgramOptionByteData(0x1FFFF806,data&0x00ff);//写0x1FFFF806
                FLASH_OB_Lock();  //上锁
                FLASH_Lock();
    
}

int main()
{
    Init_UART2();
                        //简单记录复位次数
    
     OptionByte_Write1(0xa5a5);
    OptionByte=OptionByte_Read1();   
    printf("OptionByte=0x%4x\r\n",OptionByte);

然后再keil烧写器配置中,要把16B的Flash打勾选上,不能只选64KB的那个ROM

STM32F0 、F1 在软件程序中写读保护选项字节(Option Bytes)相关推荐

  1. Java IO练习--在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中

    package com.kj.test;import cn.hutool.core.io.IoUtil;import java.io.File; import java.io.FileOutputSt ...

  2. 在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中

    import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExce ...

  3. STM32调试过程中,读保护,写保护造成的无法擦写芯片问题的解决办法和相关讨论

    调试Flash读保护时,Jlink不能下载程序 发布: 2010-1-20 22:54 | 作者: linew | 来源: StmFans思蜕盟 OPELC 自由电子联盟 调试flash读保护时,点了 ...

  4. jsp编写程序实现写读留言板内容的功能

    (1)编写程序实现写留言板内容的功能. 编写一个JSP页面writefile.jsp,该页面提供一个表单,用户可以通过表单输入留言标题和内容,提交留言跳转到WriteFileContent.jsp页面 ...

  5. Spring MVC,Thymeleaf,Spring Security应用程序中的CSRF保护

    跨站点请求伪造(CSRF)是一种攻击,它迫使最终用户在当前已通过身份验证的Web应用程序上执行不需要的操作. 如果您使用Spring Security 3.2及更高版本,在Spring MVC / T ...

  6. stm32使用 ST-LINK Utility量产,程序读保护、写保护

    一.下载 ST-LINK Utility 去ST官网下载ST-LINK Utility,下载链接,安装. 二.使用ST-Link链接板子,打开ST-LINK Utility,点连接,如果正常,则stm ...

  7. 软件加密系统Themida应用程序保护指南(二):有哪些保护选项

    Themida是先进的Windows软件保护系统,它被用于满足软件开发人员对于所开发应用程序安全保护的需求,使其远离被先进的逆向工程和软件破解的危险.Themida采用最新最强大的软件保护技术Secu ...

  8. stm32f4 RAM中运行程序 读保护设置

    主要是为了在RAM中运行程序来解除读保护的.没想到ST-Link Utility 就直接可以. ST-Link Utility:target-->options bytes-->就可以看到 ...

  9. 让你提前认识软件开发(14):程序中的算法

    第1部分 又一次认识C语言 程序中的算法 [文章摘要]         算法(Algorithm),是程序的灵魂.著名计算机科学家.图灵奖获得者沃思曾提出过一个公式:数据结构+算法=程序. 可见,算法 ...

最新文章

  1. c语言词法分析程序,词法分析器(c语言实现)
  2. nginx 注释配置及详解
  3. python调用simulink_使用Python从dbc文件中提取simulink建模数据定义
  4. Oracle 12c 安装及配置
  5. C#串口通信工作笔记0001---嵌入式_串口通信_数据发送
  6. 逻辑回归与梯度下降法
  7. C/C++中struct/union/class内存对齐
  8. 关于Universal-Image-Loader加载同一张图只成功一张的问题
  9. 使用svn merge 实现回退版本
  10. 从全球制造业的迁移史,看中国制造业未来会怎么走?
  11. 全球及中国DIN 2353压缩配件行业研究及十四五规划分析报告
  12. ppt循环动画的制作
  13. java写一个结婚的方法_一份结婚流程 作为你结婚的Project管理不错哦
  14. MATLAB颜色的植物虫害检测识别
  15. 江苏学计算机软件哪个专科大学好,江苏 我学软件技术可以报考哪些学校
  16. 【JS】JSON.stringify( )
  17. Android手机如何更改hosts文件
  18. 【前端学习记录】Node.nodeType()
  19. 对那些家庭经济特别艰难的学生
  20. 计算机应用基础 周凌,计算机基础毕业论文范文

热门文章

  1. java中冒号的用法
  2. wi ndows ap i,windows程序设计第二章Unicode简介.doc
  3. 快讯:预装Ubuntu 11.10小电脑南非开卖
  4. 企业面试遇到的问题02
  5. 快速Ps在线P图#稿定
  6. RecyclerView安卓androidx.widget.RecyclerView
  7. Windows11 笔记本有线连接 WLAN(WIFI)共享方法(不知道Win10这种方法好不好使)
  8. Rust 闭包学习 (Fn/FnMut/FnOnce)
  9. contactform7 ajax,Wordpress contact_form_7_v5.0.3 插件 权限提升、任意文件读取漏洞分析...
  10. 操作系统实现IO的三种方式