#define MODIFY_REG(REG, CLEARMASK, SETMASK)

 #define MODIFY_REG(REG, CLEARMASK, SETMASK)             WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))

这个宏 MODIFY_REG 是在嵌入式编程中,它用于修改一个寄存器的特定位,而不影响其他位。这个宏接受三个参数:

REG:要修改的寄存器的地址。
CLEARMASK:要清除的位掩码(即,设置为0的位)。
SETMASK:要设置的位掩码(即,设置为1的位)。
宏的工作原理如下:
1.READ_REG(REG):首先读取当前寄存器的值。
2.& (~(CLEARMASK)):然后,使用按位非操作(~)来反转CLEARMASK中的所有位,并通过按位与操作(&)来清除REG中由CLEARMASK指定的位。
3.|:接着,使用按位或操作(|)来设置REG中由SETMASK指定的位。
4.WRITE_REG((REG), ...):最后,将修改后的值写回REG寄存器。

这个过程通常称为位域操作或位掩码操作,是底层硬件编程中非常常见的技术。

-------------------------------

这里有一个使用此宏的示例

// 假设我们有一个名为FLASH_CR的寄存器,我们想要修改其中的PG位和SER位。
// PG位是第6位,SER位是第5位。
// 我们想要清除PG位(将其设置为0),并设置SER位(将其设置为1)。\

// 定义位掩码 
#define FLASH_CR_PG_CLEAR_MASK (1 << 6)// 清除PG位(将其设置为0)
#define FLASH_CR_SER_SET_MASK (1 << 5)// 设置SER位(将其设置为1)

// 使用MODIFY_REG宏来修改寄存器
MODIFY_REG(FLASH->CR, FLASH_CR_PG_CLEAR_MASK, FLASH_CR_SER_SET_MASK);

-------------------在STM32程序(keil)中应用截图:

AHB分频寄存器配置:

 // 定义要清除的位掩码7:4设1:   0xF<<4-----11110000

//设置的位掩码 7:4的值

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中小企业如何降低网络攻击和数据泄露的风险?

德迅云安全收集了Bleeping Computer 网站消息&#xff0c; Arctic Wolf 表示 Akira 勒索软件组织的攻击目标瞄准了中小型企业&#xff0c;自 2023 年 3 月以来&#xff0c;该团伙成功入侵了多家组织&#xff0c;索要的赎金从 20 万美元到 400 多万美元不等&#xff0c;如果受害…

leetcode2

翻转链表 struct ListNode* reverseList(struct ListNode* head) {struct ListNode* prev NULL;struct ListNode* curr head;while (curr ! NULL) {struct ListNode* nextTemp curr->next;//nextTemp的作用是为了记录&#xff0c;以便再反转后可以curr->next prev; …

大数据开发-Hadoop之HDFS高级应用

文章目录 HDFS回收站HDFS的安全模式定时上传数据至HDFSHDFS的高可用和高扩展HDFS写数据过程源码剖析 HDFS回收站 HDFS会为每个用户创建一个回收站目录:/user/用户名/.Trash/回收站中的数据都会有一个默认的保存周期&#xff0c;过期未恢复则会被HDFS自动彻底删除默认情况下HDF…

数智驱动“坐商”变“行商”,安通控股迈向综合物流服务新高度

在全球经济增长放缓的大环境下&#xff0c;集装箱运输市场也面临供需双弱的新挑战。 国内内贸集装箱物流企业TOP3——安通控股股份有限公司&#xff08;以下简称“安通控股”&#xff09;激流勇进&#xff0c;积极推进营销理念从“业务操作型”向“客户营销型”转变、从传统的…

机器学习-启航

文章目录 原理分析机器学习的两种典型任务机器学习分类总结数据机器学习分类解读简单复杂 原理分析 马克思主义哲学-规律篇 规律客观存在&#xff0c;万事万物皆有规律。 机器学习则是多维角度拆解分析复杂事实数据&#xff0c;发现复杂事实背后的规律&#xff0c;然后将规律用…

C++小记 -链表

链表 文章目录 链表链表基础理论链表的类型单链表双链表循环链表 链表的存储方式链表的定义链表的操作添加节点删除节点 性能分析构建链表删除节点&#xff08;内存泄漏的坑&#xff09;1.直接移除2.使用虚拟头结点3.delete指针后&#xff0c;要将指针置为NULL&#xff01;&…

STM32第九课:ADC单通道模数转换

一、ADC简介 ADC是Analog-to-DigitalConverter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。 STM32f103 系列有3个ADC&#xff0c;精度为12位&#xf…

Linux中线程的实现,线程的接口相关函数pthread_create、pthread_join、pthread_exit

目录 一.线程的概念 二.操作系统中线程的实现 三.Linux中线程的实现 四.进程与线程的区别 五.线程的接口相关函数 5.1 pthread_create 5.2 pthread_join 5.3 pthread_exit 六.代码演示 七.如何解决上述问题&#xff1f; 方案1. 方案2. 方案3. 一.线程的概念 进程是…

使用 Docker 部署 Stirling-PDF 多功能 PDF 工具

1&#xff09;Stirling-PDF 介绍 大家应该都有过这样的经历&#xff0c;面对一堆 PDF 文档&#xff0c;或者需要合并几个 PDF&#xff0c;或者需要将一份 PDF 文件拆分&#xff0c;又或者需要调整 PDF 中的页面顺序&#xff0c;找到的线上工具 要么广告满天飞&#xff0c;要么 …

小程序API能力集成指南——画布API汇总(四)

CanvasContext canvas 组件的绘图上下文。 方法如下&#xff08;3&#xff09;&#xff1a; scale CanvasContext.scale CanvasContext.scale(number scaleWidth, number scaleHeight) 功能描述 在调用后&#xff0c;之后创建的路径其横纵坐标会被缩放。多次调用倍数会相…

Flutter性能优化

性能分析工具 &#xff08;1&#xff09;performance overlay 开启performance overlay后&#xff0c;Flutter APP上将显示一个展示一个浮层&#xff0c;浮层中会实时展示当前的UI线程及Raster线程的运行情况。如果都是蓝色竖条&#xff0c;说明界面运行流畅&#xff0c;否则则…

【CSP考点回顾】前缀和数组

一、一维数组前缀和 前缀和算法是一种用于处理数组的技术&#xff0c;它可以快速计算任何连续子数组的和。适合在多次查询中需要求解多个范围和的情况。使用前缀和算法可以将每次求和的时间复杂度从 O(n) 降低到 O(1)。 前缀和的思想是创建一个新数组 A r r Arr Arr&#xff0…

递增三元组(第九届蓝桥杯)

文章目录 题目原题链接思路分析二分做法1二分做法2双指针做法前缀和解法 题目 原题链接 递增三元组 思路分析 由时间复杂度可知需要至少优化到 O ( n l o g n ) O(nlogn) O(nlogn)才行 而纯暴力枚举三个数组的话&#xff1a; O ( n 3 ) O(n^3) O(n3) 可以考虑将b[]作为标志&…

RabbitMQ 交换器

RabbitMQ 交换器 官方例子 http://www.rabbitmq.com/getstarted.html direct 如上图所示&#xff0c;两个队列绑定到了direct交换器上&#xff0c;第一个队列绑定的 binding key 为 orange &#xff0c;第二个队列有两个绑定&#xff0c;分别是 black 和 green 。 如上图所示…

基础小白快速入门web前端开发技术------>web概述

Web概述 我们在编程的学习中&#xff0c;随着学习的深入&#xff0c;我们会理解到WEB这个东西&#xff0c;那么 web究竟是个啥&#xff0c;到底该咋用&#xff1f; web&#xff0c;是网站的英文意思&#xff0c;又被称作“下一代Web3.0&#xff0c;互联网”&#xff0c;是在We…

vue在线查看pdf文件

1.引入组件 npm install --save vue-pdf2、pdf组件页面模板 <template><div class"scrollBox" ><el-dialog :visible.sync"open" :top"1" width"50%" append-to-body><div slot"title"><el…

混沌工程-经典案例分享

目录 前言 案例 1、强弱依赖不合理 2、预案不生效 3、异常数据不兼容 4、监控体系缺陷 5、系统缺整体架构设计 总结 前言 我们公司从启动混沌工程到现在已经几乎覆盖了线上的所有核心业务&#xff0c;先后进行过2000次演练共挖掘出120个漏洞。这些漏洞有些得了及时修复…

DevEco Studio编译时候自动生成js、js.map文件导致项目无法运行

这算是开发工具的bug吧&#xff0c;估计后期能修复。 解决办法&#xff0c;手动删除.js、.js.map文件即可&#xff1b; 文件太多&#xff0c;删除很麻烦&#xff0c;有个大佬写了个插件&#xff0c;可一键删除&#xff1a;ArkCompilerSupport DevEco Studio 运行项目有时会自动…

二叉树进阶leetcode

606. 根据二叉树创建字符串 要点&#xff1a;前序遍历&#xff0c;当左子树为空时&#xff0c;右结点有数字时要给左边加括号 class Solution { public:string tree2str(TreeNode* root) {string s;//创建一个字符串if(rootnullptr){return s;}sto_string(root->val);//保存…

网络、网络协议模型、UDP编程——计算机网络——day01

今天来到了网络编程&#xff0c;主要讲了网络、网络协议模型以及UDP编程 网络 网络主要是进行&#xff1a;数据传输和数据共享 网络协议模型 OSI协议模型应用层 实际发送的数据表示层 发送的数据是否加密会话层 是否建立会话连接传…