在HAL库的头文件中可能会看到类似一下两行的代码,对于新手来说可能不太理解究竟是什么意思,下面谈一谈我的理解。


首先第一行:

GPIOB_ODR|=(1<<10);

学过C语言都知道,A|=B实际上就是A=A|B.那么这段代码的意思就不难理解。

假如GPIOB_ODR原有值为:0000 0000 0000 0001,现在要求对第二位进行赋1即:0000 0000 0000 0010。二者相与的结果就是 0000 0000 0000 0011.

那么不难理解这一行代码的意思为:在保持寄存器原有的状态上,对某一位或多位进行赋值操作。避免了使用GPIOB_ODR=(1<<10)对寄存器赋值时,会改变原寄存器值的问题。


其次第二行:

GPIOB_ODR&=~(1<<10);

与理解第一行代码的思路差不多。首先我们假设寄存器初始状态值为0000 0000 0000 0001;先取反:1111 1111 1111 1110。让二者相与就成了:0000 0000 0000 0000.实现了寄存器值全部位置0的操作。

对 GPIOB_ODR|=(1<<10) GPIOB_ODR=~(1<<10)的理解相关推荐

  1. 微软正式发布Windows 10 2020年10月更新

    让大家等待多时的Windows 10 2020年10月更新终于来了,这也是今年微软为Win10准备的最后一个重大更新. Windows 10 2020年10月更新就是之前多次说道的Windows 10 ...

  2. ArcGIS Engine 项目10.1升级10.2

    一 10.1 到 10.2 ArcGIS Engine 项目,相同代码,从10.1升级10.2: 首先是VS载入项目时窗体上的控件会出现问题:然后,如下面图,即可: 看下引用,已经出了问题: 右击添加 ...

  3. 安装程序无法创建新的系统分区也无法定位现有系统分区_如何拥有一个 Windows 10 和 Debian 10 的双系统...

    在无数次劝说自己后,你终于做出了一个大胆的决定,试试 Linux.-- James Kiarie(作者) 在无数次劝说自己后,你终于做出了一个大胆的决定,试试 Linux.不过,在完全熟悉 Linux ...

  4. gitlab 迁移、升级打怪之路:8.8.5-- 8.10.8 -- 8.17.8 -- 9.5.9 -- 10.1.4 -- 10.2.5

    gitlab 迁移.升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5 gitlab 数据 ...

  5. Java黑皮书课后题第10章:*10.26(计算器)修改程序清单7-9,接收一个字符串表达式,其中操作符和操作数由0到多个空格隔开

    第10章:*10.26(计算器) 题目 程序清单7-9 本题代码:大幅优化升级 题目 程序清单7-9 对代码进行了修改:原代码将"."认做乘号,修改后将"*"作 ...

  6. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  7. Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字

    Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...

  8. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类

    Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...

  9. Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中

    Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中 题目 程序说明 题目槽点 代码:Test2_BMI.java 运行实例 题目 程序说明 Test2_BMI.java ...

  10. Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))

    Java黑皮书课后题第10章:*10.1设计一个名为Time的类.编写一个测试程序,创建两个Time对象 题目 程序 代码 Test1.java Test1_Time.java 运行结果 UML 题目 ...

最新文章

  1. 设计模式随笔系列:鸭子-策略模式(Strategy)
  2. codeforces上红记
  3. LeetCode 346. 数据流中的移动平均值(队列)
  4. python计算N维数据的笛卡尔积
  5. 前言:智能车制作的那些事
  6. link服务器间网络通讯错误_LINK-服务器间网络通讯错误
  7. 显示计算机配置的命令是,查看电脑配置命令
  8. asp企业建站系统 最新推出的 免费下载
  9. Compose for Desktop (Kolin跨平台编写Mac微信应用)
  10. 大学生体测技巧 动态拉伸,立定跳远,肺活量,仰卧起坐,坐位体前屈
  11. 如何在Mac上卸载软件?用这三种方法简单、干净、快速
  12. java线程的生命周期及wait(),notify(),notifyAll()的详解分析
  13. 通俗理解光猫、网关、路由器、交换机
  14. Web自动化测试-Protractor基础(二)
  15. JavaScript中的设计模式
  16. 解决springboot引入JSONObject包报错
  17. 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...
  18. VLAN和交换机接口模式:access、trunk、hybrid
  19. 数字电子技术基础(七):加法器
  20. 由量变到质变 写出高质量代码

热门文章

  1. 计算机动画的 优缺点,浅谈计算机动画画面的视觉特征
  2. 赫鲸助力小程序迁移,解决绑定异主体商户号无法解除问题!
  3. python刷票 黑科技_抢火车票这个事吧,其实我也能做!(python黑科技)
  4. sort求交集并集差集
  5. MD290,MD380,MD500变频器源码
  6. 计算机应用基础第1章在线考试,国开网计算机应用基础(本)形考作业一答案
  7. 使用shiro标签遇到的坑
  8. QML类型——ListView
  9. Excel 公式(sumif, sumproduct)
  10. 怎么恢复文件系统RAW机械硬盘的资料