STM32 keil中__IO得意思

2023-10-26

__IO解释

STM32得库函数中(HAL和LL库都有),存在一个__IO得宏定义

#define     __I         volatile const        /*!< defines 'read only' permissions      */
#define     __O     volatile                  /*!< defines 'write only' permissions     */
#define     __IO    volatile                  /*!< defines 'read / write' permissions   */

volatile得含义为

允许硬件改变变量得数值

我来解释一下

假如我们定义一个变量

int Flash_Num __attribute__((at(Outer_Flash_ADDR)));
/*******************************************
解释
int x __attribute__((at(ADDR)));
可以将x存放在指定的地址ADDR中
********************************************/

而这个变脸得地址,我们利用attribute((at(ADDR)));这个功能将Outer_Flash_ADDR将定义的Flash_Num变量数据存入了外部扩展flash中。

这时,突然!有一个外部得设备,用硬件得方式把Flash_Num地址中存储得变量给更改了!!!我们这时还想知道更改后得数据是啥。

但是,悲剧发生了,我们用软件读出来得变量数值竟然毫无变化!

因为软件只能读软件改变得变量,读不出来硬件改变得变量,呐怎么办呐????

这时候你只需要在定义变量前加一个__IO

__IO int Flash_Num __attribute__((at(Outer_Flash_ADDR)));

瞬间就成功读出来了~~~


总结

volatile形变量可以被硬件改变
在需要硬件改变变量得场合中不可或缺!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 keil中__IO得意思 的相关文章

  • 【手把手带你用pid算法控制电机】——(4)串级PID控制电机

    前言 1 该系列教程是基于stm32f103c8t6最小系统板的hal库开发 用最通俗易懂的方式手把手带你学会使用Pid算法的速度环 位置环以及速度位置串级pid 2 出这一期Pid系列教程的想法是前段时间我参加了一个比赛 要用到串级Pid
  • 第1课:三位一体定位法,让写作事半功倍

    做最懂技术的传播者 最懂传播的工程师 课程内容分析 本课程的目标是 通过对一系列问题的梳理 找到适合自己的输出状态 确定与理想输出状态之间存在的差距 以及采取什么办法 减少差距 知识要点 1 受众需要什么 省时间的内容 收敛 看过就走 教你
  • Netty源码剖析之HashedWheelTimer时间轮

    版本信息 JDK1 8 Netty all 4 1 38 Final 时间轮的介绍 我们知道钟表分为很多块 每时钟滴答一次就往前走一个块 而时间轮就是使用这个思想 如下图 上图总共分为8块 每过100ms就往前走一块 然后周而复始 此时 我
  • HC32L130单片机入坑记

    解决问题的思路 经验就可提高工作效率 1 调试中遇到的问题及解决思路 1 程序debug过程中 进入hardware default中断中无限循环 解决办法 运用断点定位到程序debug出错的具体位置 程序最终执行的位置即为程序出错的位置
  • alook浏览器哪个好 夸克浏览器_夸克(Quark)浏览器的安装和使用

    前面的文章 我们大概介绍了一下夸克浏览器的 本片将着重将一下夸克浏览器的使用 下载安装 去夸克的官方网站下载安装包 上传到手机进行安装 去各大应用商店去下载安装 比如小米手机的小米应用商店 华为的华为应用商店 或者第三方的豌豆荚等应用商店去

随机推荐

  • flex & bison 基础概述

    1 前言 限于作者能力水平 本文可能存在谬误 因此而给读者带来的损失 作者不做任何承诺 2 本文目标 简单介绍 flex 和 bison 的基础使用方法 简要分析 flex bison 生成代码的工作流程 3 flex bison 3 1
  • 超详细讲解 H5 移动端适配方案

    目录 REM适配方案 1 前言 2 原理 3 适配代码 4 总结 vw适配方案 1 原理 2 适配代码 3 适配方案对比 1px问题 1 简述 2 代码测试 总结 REM适配方案 1 前言 设计师交付给前端开发一张宽度为750px的视觉稿
  • 重新安装ROG Armoury Crate

    文章目录 使用官方卸载工具卸载奥创 安装奥创 更新奥创之后 Aura Sync 坏了 无法调整灯光 打开 Aura Creator 提示服务运行异常 在任务管理器中随便禁用了几个奥创 Asus的服务后 再次打开 Aura Creator 提
  • 【人工智能】SVM 分类器的设计与应用(QDU)

    人工智能 Astar算法求解8数码问题 QDU 人工智能 利用 搜索的博弈树算法编写一字棋游戏 QDU 人工智能 Fisher 线性分类器的设计与实现 QDU 人工智能 感知器算法的设计实现 QDU 人工智能 SVM 分类器的设计与应用 Q
  • Linux中查看socket状态

    Linux中查看socket状态 cat proc net sockstat 这个是ipv4的 sockets used 137 TCP inuse 49 orphan 0 tw 3272 alloc 52 mem 46UDP inuse
  • 响应式布局(媒体查询+%)

    总结 核心思想 每一个最外层盒子给一个max width 盒子中的内容width全部使用 表示 使用 元素全部写在盒子里 当媒体查询满足情况是display block 注意 精确的是需要一样的 媒体查询相当于if 过渡的动画写在默认样式里
  • 读书笔记-看见未来:改变互联网世界的人们

    作者 余晨 推荐序二 未来从来不会自动地发生 世界正在重新 造物 它既是虚拟意义上的 又同时是实物意义上的 宙斯在假眠 而诸神则各逞其能 时代 曾经刊登过的一篇文章认为 今天的个人计算机革命和互联网之所以成为这样 乃是继承了20世纪60年代
  • LLVM汇编语言指导手册之指令手册

    下面是我对llvm汇编中一些不常用的指令的总结 shl 指令 语法
  • wazuh日志审计--定制规则

    日志审计 定制规则 目录布局 规则集文件夹结构如下所示 在接收到agent传来的日志后 manager会根据 var ossec ruleset decoders里面的各种规则对日志进行处理 提取到了指定字段的值之后再根据 var osse
  • 物理这一块真不好搞,

    研究了一段PHYSX 发现真是寸步难行 英文文档也不是很详细 哎 没人带着的话 还是不搞为好 继续封装软引擎吧 没法干了 心里泼凉泼凉的 哎 咋弄呢 看来只能当个兴趣爱好了 或许用下游戏引擎 看看有没有集成好的
  • TensorFlow 深度学习笔记 Stochastic Optimization

    Stochastic Optimization 转载请注明作者 梦里风林 Github工程地址 https github com ahangchen GDLnotes 欢迎star 有问题可以到Issue区讨论 官方教程地址视频 字幕下载
  • adb移植到Android平台使用

    adb移植到Android平台使用 1 工具源码 所需源码 openssl git clone https github com openssl openssl git zlib 1 2 8 git clone https github c
  • JSOUP爬取4K高清壁纸

    jsoup jar包 1 11 2 链接 https pan baidu com s 1pe3 r5 YB pGEsosfRLbsA pwd 41w5 提取码 41w5 效果 代码 import org jsoup Jsoup import
  • Java.nio.file.NoSuchFileException] - 文件未找到异常处理及解决方法

    Java nio file NoSuchFileException 文件未找到异常处理及解决方法 在日常的Java开发中 我们经常会遇到各种异常情况 其中之一就是 Java nio file NoSuchFileException 即文件未
  • 求帮助安装mysql 出现红色感叹号

  • 【python】【django】cursor.fetchall()的结果是元组

    今天做测试 用django db 的connection来执行一个非常简单的查询语句 sql str select col 1 from table 1 where criteria 1 cursor connection cursor c
  • 混乱的代码是技术债吗

    翻译自 Uncle Bob 的 Blog A Mess is not a Technical Debt 主要是鲍勃大叔的观点 混乱的代码实现不是技术债 原文地址见超链接 The term Technical Debt was created
  • 成功解决安装tensorflow,安装进度1/4,爆红一大片且有很多File出现timed out

    之前安装几次 CPU tensorflow总是出现一大片红 自己发现其中一个原因是python版本和tensorflow不对应 tensorflow 2 0 0 得和python3 5 3 7对应 我之前的版本是3 8 5 会出现不兼容情况
  • 银行定期存款产品目标客户的确定——基于逻辑回归

    本篇文章将会介绍用Python分析银行定期存款产品目标客户的确定详细建模细节 业务框架分析以及模型的选择与评估分析参见上一篇文章 银行定期存款产品目标客户的确定 基于逻辑回归 建模前分析 1 导入各种模块并读取数据 2 数据预处理 维规约
  • STM32 keil中__IO得意思

    IO解释 STM32得库函数中 HAL和LL库都有 存在一个 IO得宏定义 define I volatile const lt defines read only permissions define O volatile lt defi