STM32的位操作(相当于51单片机的sbit)

经过一段时间的学习,今天发现STM32的单个端口都有一个32位的地址,这样就可以把这个地址给找出来,进行单个位的操作了,这也没有什么好说的,直接复制粘贴就好了,用到的时候过来复制直接使用就行了。虽然看着挺多的起始最后就是得到一个地址而已:

#define GPIOA_ODR_Addr       (GPIOA_BASE + 0x0C)    //想用哪个GPIO就改成ABCDEF,可以是ODR也可以是IDR
#define PAout(n)              *(unsigned int*)((GPIOA_ODR_Addr & 0xf0000000) + 0x02000000 + ((GPIOA_ODR_Addr & 0x00ffffff) << 5) + (n << 2))
// PAout(n)  这个n就代表这个位

上面这个代码是写到头文件里面的,使用的时候就是直接使用PAout(n)就好了,n写几就是第几个端口这个单独的位,0x0c是ODR寄存器的偏移地址。我还总结了一个图:

为此我特意封装了一个函数:

这上面是输出寄存器的写法,输入寄存器也是一样的写法:

#ifndef __KEY_H
#define __KEY_H#define GPIOA_IDR_Addr       (GPIOA_BASE + 0x08)    //想用哪个GPIO就改成ABCDEF,可以是ODR也可以是IDR
#define PAin(n)              *(unsigned int*)((GPIOA_IDR_Addr & 0xf0000000) + 0x02000000 + ((GPIOA_IDR_Addr & 0x00ffffff) << 5) + (n << 2))
// PAout(n)  这个n就代表这个位void Key_Init(void);uint8_t Key(void);#endif

直接判断这个PAin(n)的值就好了,1就证明这个端口是高电平,0这个端口就是低电平。

最后完成了一个按键控制一个LED灯的亮灭的工程:

我今天主要是为了记录这种方法,指不定以后什么时候就用到这种方法呢?暂时我是用不到这个方法的,也不是什么特别重要的方法,用别的方法也能达到同样的效果,不过感觉没有这样直接啊!所以还是记录下吧!

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

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

相关文章

macU盘在电脑上读不出来 u盘mac读不出来怎么办 macu盘不能写入 Tuxera NTFS for Mac免费下载

对于Mac用户来说&#xff0c;使用U盘是很常见的操作&#xff0c;但有时候可能会遇到Mac电脑无法读取U盘的情况&#xff0c;这时候就需要使用一些特定的工具软件来帮助我们解决问题。本文就来告诉大家macU盘在电脑上读不出来是怎么回事&#xff0c;u盘mac读不出来怎么办。 一、m…

解决redis乱码问题

目录 1.问题 2.查看redis序列化机制 3.设置redis的序列化器 1.问题 在使用redis最为缓存时&#xff0c;发现key乱码问题 这是由于redis的序列化机制导致的 2.查看redis序列化机制 3.设置redis的序列化器 Configuration Data public class RedisConfig {/*** redis序列化*…

蓝桥杯 2019 省A 糖果 动态规划/二进制

#include <bits/stdc.h> // 包含标准库中的所有头文件 using namespace std;int main() {int n,m,k; // 定义变量n&#xff08;糖果包数&#xff09;、m&#xff08;口味数&#xff09;、k&#xff08;每包糖果的个数&#xff09;cin>>n>>m>>k; // 输入…

Ninja使用教程【含官方文档翻译】

前言 ninja官方文档是英文版&#xff0c;查阅起来不方便&#xff0c;所以自制一版中文版本&#xff0c;方便快速查找 附带自己练习使用的demo代码&#xff0c;适合初学者入门练习&#xff0c;有不懂的关键字直接在此页面搜索 使用搜索快捷键&#xff1a;ctrlf 译自Ninja版本…

探索工业AI智能摄像机的卓越性能!

​ 在当今快速发展的工业智能化领域&#xff0c;上海晶珩的工业AI智能摄像机系列以其卓越的性能和多功能性在国内外备受关注&#xff08;文末有国外工程师的评测链接&#xff09;。搭载Raspberry Pi CM4支持的ED-AIC2000和ED-AIC2100系列旨在广泛应用&#xff0c;涵盖从简单的条…

C++ 检测文本文件编码格式

重点&#xff1a; 1.在线检查工具 在线文件编码识别- 在线工具 (bugscaner.com) 2.检查文章链接 C读取文本文件 ANSI,UNICODE,UTF-8 - 猴子你是猪吗 - 博客园 (cnblogs.com) 3.检查是否是UTF8格式 bool check_utf8_bom(const std::wstring& filename) {std::ifstream …

React之基础项目搭建

前言 React的生态系统非常庞大&#xff0c;拥有大量的第三方库和工具&#xff0c;如React Native&#xff08;用于构建原生移动应用&#xff09;、Next.js&#xff08;用于构建服务器渲染应用&#xff09;、Create React App&#xff08;用于快速搭建React应用的脚手架&#x…

OLAP与OLTP介绍

OLAP与OLTP介绍 在讨论OLAP和OLTP之前&#xff0c;我们需要了解它们的基本概念。OLAP&#xff08;在线分析处理&#xff09;和OLTP&#xff08;在线事务处理&#xff09;是数据处理的两种不同方法。它们针对不同类型的数据库工作负载进行了优化&#xff0c;适用于不同的业务需…

工业数据采集平台:从起源到崛起的辉煌历程

关键词&#xff1a;工业数据采集平台, 工业数据采集, 工业数据采集分析,智能化 在当今数字化的时代&#xff0c;工业领域也在经历着深刻的变革。而工业数据采集平台的发展历程&#xff0c;正是这场变革中的重要篇章。 回首过去&#xff0c;工业数据采集曾是一个繁琐而复杂的过…

整数划分(计数类dp)-java

整数划分我们主要通过两种思路来对这道题就行解决。 文章目录 前言 一、整数划分 二、模拟完全背包 三.代码如下 1.代码如下 2.测试样例 3.代码运行结果 四、计数类dp 4.1算法思路 4.2代码如下 总结 前言 整数划分我们主要通过两种思路来对这道题就行解决。 提示&#xff1a;以…

【数据库(MySQL)基础】以MySQL为例的数据库基础

文章目录 0. 本文用到的emp表,dept表,salgrade表1. MySQL入门2. 简单查询3. 字段计算4. 条件查询4.1 and4.2 null4.3 or4.4 and和or的优先级4.4 in 和 not in4.5 模糊查询 5. 排序5.1 简单排序5.2 两个字段排序5.3 综合排序 6. 一些常用函数6.1 大小写转换6.2 substr子字符串6.…

数据库系统工程师考试大纲

数据库系统工程师考试大纲主要包括以下几个方面的考试要求&#xff1a; 1.掌握计算机体系结构以及各主要部件的性能和基本工作原理。 2.掌握操作系统、程序设计语言的基础知识&#xff0c;了解编译程序的基本概念。 3.熟练掌握常用数据结构和常用算法。 4.熟悉软件工程和软件开…

15. 【Android教程】按钮 Button/ImageButton

在前面两章我们讲了 TextView&#xff0c;它是一个纯输出的控件&#xff1b;而 EditText 在 TextView 基础之上加入了简单的输入功能&#xff1b;今天要讲的 Button 是一个和用户互动感很强的控件&#xff0c;从今往后不再是单纯的文本展示&#xff0c;我们可以通过 TextView、…

蒙德冒险者的游戏

描述 蒙德城的一群冒险者计划进行一场特殊的表演以庆祝风神节。这场表演涉及到一项特别的挑战&#xff0c;即“冒险者塔”——一项测试冒险者们团队协作和个人承受能力的活动。 在“冒险者塔”表演中&#xff0c;参与者需要站在彼此的肩膀上&#xff0c;形成一个人类塔&#…

智能汽车领域检测实验室数智化转型

随着汽车制造行业自主研发能力的提高&#xff0c;当前的汽车企业实验室不仅需要进行种类繁多的试验项目&#xff0c;同时还需要将试验过程中的试验结果、试验过程、报告文档等一系列重要数据进行统一管理。为了提升实验数据的安全性及应用性&#xff0c;青软青之通过软硬件结合…

快速下载huggingface资源 (cli使用)

因为墙的原因&#xff0c;huggingface上的资源难以下载&#xff0c;通过本博客的方法不需翻墙也能快速下载。 本博客主要介绍&#xff1a; 1. 如何离线下载huggingface 资源 2. huggingface cli 的简单使用 安装 pip install -U "huggingface_hub[cli]" 配置 #…

for in 和 for of 的区别

1.for in 和 for of 都可以循环数组&#xff0c;for in 输出的是数组的 index 下标&#xff0c;而 for of 输出的是数组的每一项的值。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport…

Unity类银河恶魔城学习记录12-7-2 p129 Craft UI - part 2源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftWindow.cs using UnityEngine.UI; using TMPro; using UnityEngin…

动态规划在电商订单计算的例子

你在网上买了一堆商品,比如说,你买了2件T恤,每件10块,5件袜子,每双5块,还有1个帽子,8块钱。但是呢,商家有个促销活动,买得越多,单价就越便宜。比如,T恤买3件以上,每件就变成9块了。这时候,怎么算出你这一单的最少花费呢? 商品价格可能会因为购买数量的不同而有所…

重看Spring聚焦ApplicationContext分析

一、理解下ApplicationContext的设计 &#xff08;一&#xff09;功能性的理解 ApplicationContext 提供了一个轻量级、灵活、可扩展的容器&#xff0c;能帮助我们更加轻松地构建和管理复杂的应用程序&#xff0c;其通过依赖注入和控制反转等技术&#xff0c;降低了组件之间的…