IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32L4系列选项字节option byte的理解(与STM32F103对比) -> 正文阅读

[嵌入式]STM32L4系列选项字节option byte的理解(与STM32F103对比)

  1. 问题背景:STM32L431 要加入stop模式来省电,发现进入stop模式后,看门狗在运行导致stop模式没有喂狗,然后系统会因为看门狗溢出导致复位。那么问题来了,如何在STM32L4 系列进入stop模式后关闭看门狗,那就必须得配置选项字节(Option byte)。
  2. 问题解决:直接贴代码如下,在系统初始化的时候加入。可以来配置选项字节,在进入stop模式,关闭看门狗,退出stop模式看门狗自动使能。
    void Config_Option_Byte(void)
    {//系统初始化调用
    	U32 uiFlag_IWDG;
    	uiFlag_IWDG = READ_BIT(FLASH->OPTR,FLASH_OPTR_IWDG_STOP);
    	if(uiFlag_IWDG)
    	{
    		PRINT_LOG("Need SET OPT\n");
    		HAL_FLASH_Unlock(); //解锁flash 
    		HAL_FLASH_OB_Unlock();//解锁“选项字节”
    		CLEAR_BIT(FLASH->OPTR,FLASH_OPTR_IWDG_STOP);// 配置 “stop模式关闭看门狗”
    
    		SET_BIT(FLASH->CR,FLASH_CR_OPTSTRT);//开始更新 “选项字节”
    		FLASH_WaitForLastOperation(100);// 等待flash 操作结束
    		CLEAR_BIT(FLASH->CR,FLASH_CR_OPTSTRT);//
    		HAL_FLASH_OB_Launch();// 加载flash,会导致重启. OPT 生效
    
    		HAL_FLASH_OB_Lock();
    		HAL_FLASH_Lock();
    	}
    	else
    	{
    		PRINT_LOG("WTD frozen in stop\n");
    	}
    
    }
    

    在系统初始化的时候,调用以上函数,就可以解决stop模式后关闭看门狗的问题。

  3. Option byte背景知识。option byte 是在STM32 内部flash的一块特殊的区域(位于0x1FFF 7800),用来存放一些配置信息。例如来配置是否开启ROM读写保护;设置保护区的起始和结束;配置是硬件看门狗还是软件看门狗;在sleep/stop/standby 模式下;WDT是否关闭等待信息。

  4. Option Byte的作用机制。IC 每次上电复位的时候,通过OBL(option byte loader) 读取flash这块选择字节区域(0x1FFF 7800)。实际上是读取5个32bit数据,然后写到flash的5个寄存器中(如下图)。从flash载入到寄存器了才可以真正生效的。

    ?

  5. ?那么如果修改option byte怎么办。就像我开头说的,我要在stop模式关闭WTD,那就必须要修改选项字节(option byte),STM32 默认选项字节配置是stop模式也是开启WTD的。我认为是由两种办法的:?

    ?1)通过ST-Link等烧录工具来配置选项字节(如下图)。但是这种办法调试的时候有用,没法生成的bin档可以批量生产。

    ?2)通过在初始化里面加入代码来修改选项字节(见我上面贴的代码)。这样程序运行的时候发现选项字节不对的时候(第一次运行),配置好然后保存在 flash 选项字节区域。下次运行载入选项字节,就不需要再次配置了。
  6. ?STML4系列的选项字节跟F103系列的还是有几点区别的。?

?????????1)选项字节option byte 在flash的地址是不同的。F103地址在0x1FFF F800开始,L4是在? ????????????????0x1FFF 7800开始。

?

? ? ? ? ?2)选项字节option byte 存储的unit 数量是不同的。F103 存储4个32bit数据,L4存储5个32bit数据。内容自然也是不同。

? ? ? ? 3)?修改选项字节的操作流程不同。F103修改选项字节要先擦除,然后再写入;L4直接操作对应Flash 的5个寄存器,然后OPTSTART 就可以把 Flash 的5个寄存器写入到 flash选项字节区域了。 L4是自动擦除的,比F103先进不少。

?

?

? ? ??

?

?

?

?

?

?

?

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:48:50  更:2021-07-29 11:49:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 23:49:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码