STM32基础知识——位操作/宏定义/#ifdef/#if defined

文章目录

    • 前言
    • 一、位操作
      • (一)简介
      • (二)位操作的妙用
    • 二、宏定义
    • 三、#ifdef和#if defined

前言

很久没发博客了,最近的学习都写在了自己的文档中,在学习新的STM32HAL库开发,还有STM32Cubemx软件,以及imu知识学习,之后会逐一将自己的学习总结发出来供大家参考学习。

一、位操作

(一)简介

位运算符的优先级从高到低,依次为~、&、^、|,
取反是单目运算符,其余为双目运算符
在这里插入图片描述
1.按位与&
同1则1,有0 则0
2.按位或|
有1则1,同0则0
3.按位异或^
相同为1,不同为0
4.取反~,左移<<,右移>>

(二)位操作的妙用

1.不改变其他位置,对想要的某几个位设值
先&清零,再|值运算
如想让value的第4-7位为0100(假设32位)

Value&=0xFF0F;
Value|=0x0040;

2.将某位设置为1
先1左移,再|值运算
如将value第4位置1

Value|=1<<4

3.将某位置零
先1左移,取反相等
如将value第3位置0

Value=~1<<3);

二、宏定义

#define 标识符 字符串

三、#ifdef和#if defined

1. 单片机程序开发过程中,经常会遇到一种情况,当满足某条件时对一组语句进行编译,而
当条件不满足时则编译另一组语句。条件编译命令最常见的形式为:

#ifdef 标识符
程序段 1
#else
程序段 2
#endif
它的作用是:当标识符已经被定义过(一般是用#define 命令定义),则对程序段 1 进行编译,否则编译程序段 2。 其中#else 部分也可以没有,即:
#ifdef
程序段 1
#endif

2. #if defined使用就是和#elif、#endif使用
可以判断多个选择的定义

3. extern外部调用
在其他.c文件中使用后,再调用

c语言部分不再复习,CSDN博客主页都有

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

应用层协议

文章目录 应用协议应用层协议概要远程登录文件传输电子邮件协议SMTPWWW 应用协议 应用层协议概要 到此为止所介绍的IP协议、TCP协议以及UDP协议是通信最基本的部分&#xff0c;它们属于OSI参考模型中的下半部分。 本文章开始介绍应用协议&#xff0c;主要是指OSI参考模型中第…

酷开科技智能大屏OS Coolita亮相第134届中国进出口商品交易会

作为中国外贸的“风向标”和“晴雨表”&#xff0c;广交会因其历史长、规模大、商品种类全、到会客商多、成交效果好&#xff0c;被称为“中国第一展”&#xff0c;它见证了中国改革开放的时代大潮与对外贸易的蓬勃发展。 2023年10月15日&#xff0c;第134届中国进出口商品交易…

【Java】记一次服务内实现排队消费模式

主要是记录一下实现过程和实现的过程中遇到的坑。 我的业务 系统中有一个接口&#xff0c;是从大数据那边拉数据&#xff0c;之前的做法是&#xff0c;开个线程池&#xff0c;让SQL去执行&#xff0c;可是如果大量的慢SQL同时&#xff0c;请求数据库的话会适得其反。并且还有…

用Go实现网络流量解析和行为检测引擎

1.前言 最近有个在学校读书的迷弟问我:大德德, 有没有这么一款软件, 能够批量读取多个抓包文件,并把我想要的数据呈现出来, 比如:源IP、目的IP、源mac地址、目的mac地址等等。我说&#xff1a;“这样的软件你要认真找真能找出不少开源软件, 但毕竟没有你自己的灵魂在里面,要不…

通用工作站设计方案 :807-ORI-S3R500 -多路PCIe3.0的单CPU通用工作站

ORI-S3R500 -多路PCIe3.0的单CPU通用工作站 (研华工业计算机IPC-610&#xff0c;IPC940 升级款) 一、机箱功能和技术指标&#xff1a; 系统 系统型号 ORI-SR500 主板支持 EEB(12*13)/CEB(12*10.5)/ATX(12*9.6)/Mi cro ATX 前置硬盘 最大支持2个3.5寸1个2.5寸SATA …

交通信号标志识别系统 python 深度学习 YOLOv5

[毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多的人 。 1、项目介绍 本系统基于YOLOv5&#xff0c;采用登录注册进行用…

C#操作注册表的方法

注册表是Microsoft Windows操作系统中的一个重要组成部分&#xff0c;用于存储和管理系统和应用程序的配置信息。它是一个层次结构的数据库&#xff0c;以树形结构组织&#xff0c;类似于文件系统中的文件夹和文件。 注册表存储了许多与操作系统和软件相关的信息&#…

【EI会议征稿】第三届新能源技术创新与低碳发展国际研讨会(NET-LC 2024)

第三届新能源技术创新与低碳发展国际研讨会&#xff08;NET-LC 2024&#xff09; 2024 3rd International Symposium on New Energy Technology Innovation and Low Carbon Development 先进的现代能源技术对世界各地的经济发展至关重要。持续的经济进步取决于安全、可靠和负担…

selenium三大等待

使用场景&#xff1a;有时候当我们操作页面元素时&#xff0c;需要等待这个过程才能操作成功。 做Ui自动化的时候&#xff0c;考虑到稳定性&#xff1a;多次运行同一脚本&#xff0c;都能够保证它是成功的。 一、强制等待&#xff1a;sleep(秒) 比如sleep(10)&#xff0c;就必…

一键批量转码:将MP4视频转为MP3音频的简单方法

随着数字媒体设备的普及&#xff0c;视频和音频格式转换的需求也越来越常见。其中&#xff0c;将MP4视频批量转换为MP3音频的需求尤为普遍。无论是为了提取视频中的背景音乐&#xff0c;还是为了在手机或电脑上方便地收听视频音频&#xff0c;这个过程都变得非常重要。接下来我…

opencv创建图片,绘制图片,画框,划线,改变像素点颜色

文章目录 创建空白图片创建一张渐变色彩色绘制多边形绘制多线改变像素点颜色 创建空白图片 bool tool_class::creatEmpty(int width, int height, std::string image_p) {// 创建一个空白图像cv::Mat blankImage(height, width, CV_8UC3, cv::Scalar(255, 255, 255));// 保存图…

蓝牙运动耳机哪个好?这几款蓝牙运动耳机不容错过!

音乐能有效地激发人体潜能&#xff0c;充分释放能量&#xff0c;达到更好的运动效果&#xff0c;因此对于运动爱好者来说&#xff0c;一款合适的运动蓝牙耳机至关重要&#xff0c;面对产品种类众多的运动耳机&#xff0c;很多人都会感到迷茫&#xff0c;经常有人问“有什么适合…

移位操作符 位操作符详解

hello hello&#xff0c;想我了吗? &#x1f604;&#x1f604;&#x1f604; 首先是移位操作符&#xff1a;<< 左移操作符 >> 右移操作符 注&#xff1a;移位操作符的操作数只能是整数。 << 左移操作符&#xff1a;移位规则&#xff1a; 左边抛弃、…

单片机程序无法下载?

原因一&#xff1a;电源问题 电源可能是导致STM32微控制器无法下载程序的一个常见原因。确保电源稳定对于正常运行和下载程序至关重要。以下是一些电源问题&#xff1a; 1. 电源电压不足&#xff1a;如果STM32微控制器没有足够的电压供应&#xff0c;它可能无法正常工作或下载程…

WPF ToggleButton 主题切换动画按钮

WPF ToggleButton 主题切换动画按钮 仿造最近看到的html中的一个效果&#xff0c;大致思路是文章这样&#xff0c;感觉还可以再雕琢一下。 代码如下 XAML: <UserControl x:Class"WPFSwitch.AnimationSwitch"xmlns"http://schemas.microsoft.com/winfx/200…

SpringData、SparkStreaming和Flink集成Elasticsearch

本文代码链接&#xff1a;https://download.csdn.net/download/shangjg03/88522188 1 Spring Data框架集成 1.1 Spring Data框架介绍 Spring Data是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快…

ROS消息过滤器之 message_filters::Synchronizer 使用详解

在ROS中&#xff0c;当我们有多个传感器发布的数据需要同步时&#xff0c;message_filters::Synchronizer 是一个非常有用的工具。它可以确保多个消息在时间上是同步的&#xff0c;以便更有效地处理数据。 1.什么是ROS消息过滤器&#xff1f; ROS消息过滤器是一种用于处理ROS…

【uni-app + uView】CountryCodePicker 国家区号组件

1. 效果图 2. 组件完整代码 <template><u-popup class="country-code-picker-container" v-if="show" :show

CV计算机视觉每日开源代码Paper with code速览-2023.11.7

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构】Understanding Deep Representation Lea…

护眼台灯横评|书客、明基、松下品牌大测评告诉你谁才是最亮的星!

护眼台灯哪个牌子好&#xff1f;随着护眼台灯普及率的日渐提高&#xff0c;护眼台灯市场也是十分火爆&#xff0c;但很多商家为了盈利&#xff0c;总是把重心放在宣传和营销手段上&#xff0c;从而导致护眼台灯的产品质量不过关&#xff0c;在使用过后不仅没有起到缓解眼睛疲劳…
最新文章