当前位置: 首页 > news >正文

嵌入式开发之设置寄存器中指定位

0 Preface/Foreword

嵌入式开发,位操作是常用的运算,读写对应寄存器指定位从而设置不同的功能。

1 设置寄存器中的任意位

1.1 清零

举例,假设一个寄存器名字为FUNCCON,地址为0x00008000,该寄存器长度为4个byte。

#define FUNCCON  (*(volatile unsigned long *)0x00008000) 

#BIT(n) (1UL << n)

现在需要将bit15清零,而且不能影响其他位,该如何操作呢? 

FUNCCON &= ~BIT(15);

分析:

  • 位操作中,&,双目运算符,表示两个操作数中所有位相与,对应位都是1则为1,否则为0;
  • 位操作中,~,单目运算符,表示取反,数据中所有位都取反, 1变成0,0变成1;

1.2 置1

举例,假设一个寄存器名字为FUNCCON,地址为0x00008000,该寄存器长度为4个byte。

#define FUNCCON  (*(volatile unsigned long *)0x00008000) 

#BIT(n) (1UL << n)

现在需要将bit12置1,而且不能影响其他位,该如何操作呢? 

FUNCCON |= BIT(15);

 

http://www.lryc.cn/news/93055.html

相关文章:

  • 第十章 数学相关
  • 数据结构——串(字符串)
  • Seata服务端的启动过程 学习记录
  • Log4J
  • 【零基础学机器学习 5】机器学习中的分类:什么是分类以及分类模型
  • 目标检测算法:Faster-RCNN论文解读
  • 基于Python的接口自动化-Requests模块
  • Vue框架中监测数组变化的方法
  • PHP isset()函数使用详解,PHP判断变量是否存在
  • 2021~2022 学年第二学期《信息安全》考试试题(A 卷)
  • 通俗讲解元学习(Meta-Learning)
  • 生成全球定位系统、伽利略和北斗二号的Matlab代码及实际数据捕获文件,为测试功能提供完整信号与频谱
  • Android 14 版本变更总览
  • 内网安全:Cobalt Strike 工具 渗透多层内网主机.(正向 || 反向)
  • ChatGPT 五个写论文的神技巧,让你的老师对你刮目相看!
  • 模型服务文档自动生成,要素追溯关联、结构规范易读|ModelWhale 版本更新
  • 《微服务实战》 第三十一章 ShardingSphere - ShardingSphere-JDBC
  • 【论文阅读】Twin neural network regression is a semi- supervised regression algorithm
  • java之反射机制和注解(更新中......)
  • 【Unity入门】25.入门结课Demo--神鸟大战怪兽
  • HTTP协议基本格式
  • 在 ubuntu 22.04 上配置界面服务器 xrdp
  • 53、基于51单片机蓄电池充电器过充过放保护LCD液晶屏显示系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)
  • 【C/C++】详解 函数重载和应用
  • WPF开发txt阅读器4:字体控件绑定
  • CoreDX DDS应用开发指南(8)开发订阅应用程序
  • 基于Python的接口自动化-读写配置文件
  • useEffect的基础知识和底层机制
  • chatgpt赋能python:Python中如何加空格
  • 软件测试之路已不再是坦途