STM32F0 、F1 在软件程序中写读保护选项字节(Option Bytes)
转载自: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)相关推荐
- Java IO练习--在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中
package com.kj.test;import cn.hutool.core.io.IoUtil;import java.io.File; import java.io.FileOutputSt ...
- 在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExce ...
- STM32调试过程中,读保护,写保护造成的无法擦写芯片问题的解决办法和相关讨论
调试Flash读保护时,Jlink不能下载程序 发布: 2010-1-20 22:54 | 作者: linew | 来源: StmFans思蜕盟 OPELC 自由电子联盟 调试flash读保护时,点了 ...
- jsp编写程序实现写读留言板内容的功能
(1)编写程序实现写留言板内容的功能. 编写一个JSP页面writefile.jsp,该页面提供一个表单,用户可以通过表单输入留言标题和内容,提交留言跳转到WriteFileContent.jsp页面 ...
- Spring MVC,Thymeleaf,Spring Security应用程序中的CSRF保护
跨站点请求伪造(CSRF)是一种攻击,它迫使最终用户在当前已通过身份验证的Web应用程序上执行不需要的操作. 如果您使用Spring Security 3.2及更高版本,在Spring MVC / T ...
- stm32使用 ST-LINK Utility量产,程序读保护、写保护
一.下载 ST-LINK Utility 去ST官网下载ST-LINK Utility,下载链接,安装. 二.使用ST-Link链接板子,打开ST-LINK Utility,点连接,如果正常,则stm ...
- 软件加密系统Themida应用程序保护指南(二):有哪些保护选项
Themida是先进的Windows软件保护系统,它被用于满足软件开发人员对于所开发应用程序安全保护的需求,使其远离被先进的逆向工程和软件破解的危险.Themida采用最新最强大的软件保护技术Secu ...
- stm32f4 RAM中运行程序 读保护设置
主要是为了在RAM中运行程序来解除读保护的.没想到ST-Link Utility 就直接可以. ST-Link Utility:target-->options bytes-->就可以看到 ...
- 让你提前认识软件开发(14):程序中的算法
第1部分 又一次认识C语言 程序中的算法 [文章摘要] 算法(Algorithm),是程序的灵魂.著名计算机科学家.图灵奖获得者沃思曾提出过一个公式:数据结构+算法=程序. 可见,算法 ...
最新文章
- c语言词法分析程序,词法分析器(c语言实现)
- nginx 注释配置及详解
- python调用simulink_使用Python从dbc文件中提取simulink建模数据定义
- Oracle 12c 安装及配置
- C#串口通信工作笔记0001---嵌入式_串口通信_数据发送
- 逻辑回归与梯度下降法
- C/C++中struct/union/class内存对齐
- 关于Universal-Image-Loader加载同一张图只成功一张的问题
- 使用svn merge 实现回退版本
- 从全球制造业的迁移史,看中国制造业未来会怎么走?
- 全球及中国DIN 2353压缩配件行业研究及十四五规划分析报告
- ppt循环动画的制作
- java写一个结婚的方法_一份结婚流程 作为你结婚的Project管理不错哦
- MATLAB颜色的植物虫害检测识别
- 江苏学计算机软件哪个专科大学好,江苏 我学软件技术可以报考哪些学校
- 【JS】JSON.stringify( )
- Android手机如何更改hosts文件
- 【前端学习记录】Node.nodeType()
- 对那些家庭经济特别艰难的学生
- 计算机应用基础 周凌,计算机基础毕业论文范文
热门文章
- java中冒号的用法
- wi ndows ap i,windows程序设计第二章Unicode简介.doc
- 快讯:预装Ubuntu 11.10小电脑南非开卖
- 企业面试遇到的问题02
- 快速Ps在线P图#稿定
- RecyclerView安卓androidx.widget.RecyclerView
- Windows11 笔记本有线连接 WLAN(WIFI)共享方法(不知道Win10这种方法好不好使)
- Rust 闭包学习 (Fn/FnMut/FnOnce)
- contactform7 ajax,Wordpress contact_form_7_v5.0.3 插件 权限提升、任意文件读取漏洞分析...
- 操作系统实现IO的三种方式