STM32(二):GPIO
GPIO(General Purpose Input Output)通用输入输出口
1.可配置为8种输入输出模式,引脚电平:0V~3.3V,部分引脚可容忍5V,输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等,输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
2.STM引脚定义:带FT 就是可以容纳5V电压的引脚
3.APB2外设总线:STM32中所有GPIO都是挂载在APB2总线上,每个GPIO外设有16个引脚;寄存器为32位,高16位未使用;驱动器:负责增大驱动能力(点灯 )施密特触发器。


IO引脚接两个保护二极管,这是对输入电压进行限幅。VDD=3.3V VSS=0V;输入电压>3.3V 上方二极管导通,输入电压<0V 下方二极管导通。不会从内部电路吸取电流。
上拉电阻,下拉电阻(给输入提供一个默认的输入电平):上闭下开:上拉输入模式;下闭上开:下拉输入模式,都闭合:浮空输入模式。
施密特触发器(整形):电压大于上限,输出高电平,电压小于下限,输出低电平,然后输入寄存器可以读取某一位的数据。
模拟输入接ADC,复用功能输入:连接到其他外设输入端口的引脚上
输出寄存器:控制16个端口,只能整体读写。
推挽输出模式(PN-MOS都有效)下,高低电平都有驱动能力,STM32对IO口具有绝对的控制权,高低电平都由STM32说了算。数据寄存器为1,上管导通,下官断开,输出直接街道VDD输出高电平。
开漏输出模式下,P-MOS无效,只有N-MOS工作,只有低电平有驱动能力。作用:输出5V电平信号(输出端口加一个5v的上拉电阻)、I2C通讯

默认低电平输出

模拟输入:ADC模数转换器专属配置。开漏、推挽输出时,输入也是有效的。
使用GPIO的三个步骤:
1. 使用RCC开启GPIO时钟
RCC外设常用的三个函数:AHB、APB2、APB1
2. 使用GPIO_Init函数初始化GPIO
3. 使用输出或者输入的函数控制GPIO口
四个常用GPIO输出函数:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 指定端口设置为高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);指定端口设置为低电平
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);根据第三个参数的值设置指定的端口。
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);第一个参数选择外设,第二个参数__,这个函数可以停驶对16个端口进行写入操作。
GPIO的输出模式:
GPIO_Mode_AIN = 0x0,模拟输入
GPIO_Mode_IN_FLOATING = 0x04,浮空输入
GPIO_Mode_IPD = 0x28,下拉输入
GPIO_Mode_IPU = 0x48,上拉输入
GPIO_Mode_Out_OD = 0x14,开漏输出
GPIO_Mode_Out_PP = 0x10,推免输出
GPIO_Mode_AF_OD = 0x1C,复用开漏
GPIO_Mode_AF_PP = 0x18复用推免
A15,B3,B4 端口不能直接使用,这几个端口默认是JTAG调试端口,需要特殊配置。
按键(输入设备)

电路中,电容一边接地,一边接入电路,考虑是否是滤波电容作用。

51单片机中,int是16位;STM32中,int占32位,long占32位
typedef只能对变量的名字进行重命名,define宏定义任何都可以
GPIO读取函数
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);返回值代表这个端口的高低电平。
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);返回值16位数据,每一位代表一个端口值
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);读取输出寄存器
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
相关文章:
STM32(二):GPIO
GPIO(General Purpose Input Output)通用输入输出口 1.可配置为8种输入输出模式,引脚电平:0V~3.3V,部分引脚可容忍5V,输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等,输入模式下…...
一文入门mysql 数据库
一、对数据库的操作 1.展示所有的数据库 show databases; 2.创建数据库 create database 数据库名 charset utf8; 3.删除数据库 drop database 数据库名; 4.查看当前使用的数据库 select database(); 5.使用数据库 use 数据库名; 二、对数据表的操作 1.展示所有表…...
通义千问( 四 ) Function Call 函数调用
4.2.function call 函数调用 大模型在面对实时性问题、私域知识型问题或数学计算等问题时可能效果不佳。 您可以使用function call功能,通过调用外部工具来提升模型的输出效果。您可以在调用大模型时,通过tools参数传入工具的名称、描述、入参等信息。…...
设置idea中放缩字体大小
由于idea没默认支持ctrl滚轴对字体调节大小,下面一起设置一下吧! 点击 文件 -> 设置 按键映射 -> 编辑器操作 -> 搜索栏输入f 点击减小字体大小 -> 选择增加鼠标快捷键 按着ctrl键,鼠标向下滚动后,点击确定即可 然后…...
frameworks 之getEvent指令
frameworks 之getEvent指令 指令解析源码追溯源码解析1.解析参数2.初始化ufds数组3.添加到poll 并做对应处理 通过 getEvent 可以识别按键基本命令和里面的关键信息 涉及到的类如下 system/core/toolbox/toolbox.csystem/core/toolbox/tools.hsystem/core/toolbox/getevent.c …...
tensorboard显示一片空白解决方案
OK艾瑞巴蒂 不知道看这个视频几个小土堆过来的,今天已经发了一篇博文探讨快速下载tensorboard了 下面用的时候叒出现问题了 from torch.utils.tensorboard import SummaryWriter writer SummaryWriter("logs")# writer.add_image() # Yx for i in range…...
C#编程中,如何实现一个高效的数据排序算法?
在C#编程中,可以使用内置的排序方法来实现高效的数据排序。最常用的方法是使用Array.Sort()和List<T>.Sort()。这些方法内部使用了快速排序算法(Quick Sort),它是一种非常高效的排序算法,平均时间复杂度为O(n lo…...
LookupError: Resource averaged_perceptron_tagger not found.解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
Leetcode JAVA刷刷站(39)组合总和
一、题目概述 二、思路方向 为了解决这个问题,我们可以使用回溯算法来找到所有可能的组合,使得组合中的数字之和等于目标数 target。因为数组中的元素可以无限制地重复选择,所以在回溯过程中,我们不需要跳过已经选择的元素&#x…...
Spring中AbstractAutowireCapableBeanFactory
AbstractAutowireCapableBeanFactory 是 Spring 框架中的一个抽象类,位于 org.springframework.beans.factory.support 包中。它实现了 AutowireCapableBeanFactory 接口,提供了一些通用的方法和逻辑,以支持 Spring 中的自动装配功能。 主要…...
PostgreSQL的walwriter和archiver进程区别
PostgreSQL的walwriter和archiver进程区别 在PostgreSQL中,walwriter和archiver进程是两个重要的后台进程,它们负责管理WAL(Write-Ahead Logging,预写日志)文件,但它们的职责和功能有所区别。理解这两个进…...
前端字体没有授权,字体版权检测(是否为方正字体)
1.截图系统中的首页和登录页面,主要是有字体的地方 2.在线字体版权检测地址:字体版权自动检测-求字体网 3.上传照片,开始对图片进行检测,每个账号有三次免费次数 4.检测完,直接查看检测报告即可, 报告中…...
在 SOCKS 和 HTTP 代理之间如何选择?
在 SOCKS 和 HTTP 代理之间进行选择需要彻底了解每种代理的工作原理以及它们传达的配置。只有这样,您才能轻松地在不同类型的代理之间进行选择。 本文概述了 HTTP 和 SOCKS 代理是什么、它们如何运作以及它们各自带来的好处。此外,我们将比较这两种代理类…...
C++适配windows和linux下网络编程TCP简单案例
C网络编程 网络协议是计算机网络中通信双方必须遵循的一套规则和约定,用于实现数据的传输、处理和控制。这些规则包括了数据格式、数据交换顺序、数据处理方式、错误检测和纠正等。网络协议是使不同类型的计算机和网络设备能够相互通信的基础,是网络通信…...
OpenDDS的GUID是如何构造的?
1、GUID、RepoID、GUID_t概念和关系 GUID(Global Unique IDentifiers)是RTPS规范约定的DDS对象的唯一性ID;RepoId(Repository IDentifiers)是Repo服务约定的DDS对象的唯一性ID;GUID和RepoId,都是基于GUID_t结构体定义,名称不同,但实质上是一样的。题外话: 无论是GUID还…...
初识MySQL(安装与配置环境)
嗨!今天我们进入一个新的领域---数据库。 首先来个小小铺垫。 我们平时存储东西的时候,一般用到文件。为什么有文件了,还继续要这个数据库呢? 很明显,文件有一些不好的地方,需要数据库来进行补充。 文件…...
druid+logback打印sql执行日志
druid 的LogFilter 为我们准备了四种logger类型,对应打印 datasource相关、connection相关、statement相关、resultset相关的日志。 druid.sql.Datasource:打印数据源相关的字段。 druid.sql.Connection:打印应用程序获得数据库连接的过程。…...
C++编程:无锁环形队列 (LockFreeRingQueue)的简单实现、测试和分析
文章目录 0. 概述1. 无锁环形队列概述1.1 无锁环形队列的特点1.2 无锁环形队列的优势与局限 2. LockFreeRingQueue 实现2.1 Enqueue 操作流程图2.2 Dequeue 操作流程图 3. 核心实现细节3.1 环形队列的大小调整3.2 索引计算3.3 原子操作与CAS3.4 线程让步 4. 测试示例程序4.1 实…...
植物生长时为什么会扭动?科学家解开令查尔斯·达尔文困惑的千古之谜
在一项新的研究中,来自美国和以色列的物理学家可能已经弄清了植物生长过程中的一种古怪行为–也是查尔斯-达尔文本人在其生命的最后几十年里所好奇的一个谜:对于许多人类来说,植物可能看起来静止不动,甚至有点无趣。但实际上&…...
SAP LE学习笔记02 - WM和库存管理(IM)之间的关系,保管Lot(Quant)
上一章学习了LE的基础知识。 1,LE的概述,LE里面包含下面3个大的模块 - LE-WM 仓库管理 / - LE-SHP 发货/ - LE-TRA 运输 2,仓库的结构 - 仓库番号 / -保管域Type(存储区域)/ - 保管区画(存储区)/ - 棚番(Storage Bin 仓位&…...
基本面分析建模——用Excel构建财务筛选系统
价值投资就像相亲——你得设定条件,才能筛选出合适的对象。ROE是"赚钱能力",净利润增长率是"成长潜力",资产负债率是"家底厚不厚"。财报就像企业的"体检报告",而Excel就是你的"红娘系统"。记住,股东的钱生钱能力,才是…...
别再傻傻分不清了!全桥、半桥、推挽电源拓扑,到底哪个更适合你的项目?
全桥、半桥与推挽拓扑实战选型指南:从理论到工程落地的关键抉择 在电力电子设计领域,拓扑结构的选择往往决定着整个项目的成败。当我第一次面对500W工业电源设计需求时,曾天真地认为"功率越大拓扑越高级"——这个错误认知让我付出了…...
告别卡顿!用MobaXterm+PyCharm专业版,在实验室服务器上丝滑跑Python的保姆级教程
实验室服务器远程开发终极指南:MobaXterm与PyCharm专业版的高效协作方案 当你的Python脚本在本地笔记本上跑得比蜗牛还慢,而实验室那台128核的服务器却在"闲置"时,这种资源错配简直让人抓狂。作为一名常年与远程服务器打交道的算法…...
Python数据容器-元组
#元组-tuple# #数据不能被修改,只能查询# #索引访问和切片与列表类似# t1 (5,3,6,98,54,125,69,5,98)定义元组,t=(数据)# print(t1)# print(t1[5])125# t2 ()#空元组# #切片# print(t1[:7:2])5,6,54,69# #常用方法# t1 (5,3,6,98,54,125,6…...
Claude代码生成Token预算管理实战:成本控制与智能优化策略
1. 项目概述与核心价值最近在折腾大模型应用开发,特别是围绕Claude这类顶尖的代码生成模型时,一个绕不开的痛点就是成本控制。模型调用是按Token计费的,而一个复杂的代码生成任务,动辄消耗成千上万个Token,账单不知不觉…...
TikTokDownload完整指南:轻松下载无水印抖音内容
TikTokDownload完整指南:轻松下载无水印抖音内容 【免费下载链接】TikTokDownload 抖音去水印批量下载用户主页作品、喜欢、收藏、图文、音频 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokDownload 抖音内容创作者和爱好者们,你们是否曾经…...
告别裸机延时!ESP32-C3/ESP32-S3用RMT外设精准驱动WS2812B灯带(Arduino/IDF双平台教程)
ESP32-C3/ESP32-S3 RMT外设驱动WS2812B灯带实战指南 当你的灯光项目从十几颗WS2812B升级到上百颗时,GPIO模拟驱动方式很快就会遇到瓶颈——闪烁、卡顿、颜色失真,这些问题的根源在于时序精度不足。ESP32系列芯片内置的RMT(Remote Control&…...
电商网站滑块验证码破解:OpenCV图像识别+轨迹模拟方案
一、前言当前主流电商、会员登录、抢购下单、接口风控场景中,滑块拼图验证码已是最常见的人机校验方式。传统简单爬虫直接请求接口极易被拦截,而滑块验证码核心防护逻辑分为两点:一是缺口位置图像匹配校验,二是人为滑动轨迹行为风…...
从排版混乱到学术规范:NKThesis LaTeX模板的中文标题架构演进之路
从排版混乱到学术规范:NKThesis LaTeX模板的中文标题架构演进之路 【免费下载链接】NKThesis 南开大学硕士毕业论文/博士论文模板 (Latex Template for Nankai University) 项目地址: https://gitcode.com/gh_mirrors/nk/NKThesis 在学术写作的数字化浪潮中&…...
从CTF赛题到真实漏洞:LFSR与BM算法在流密码攻击中的实战指南
从CTF赛题到真实漏洞:LFSR与BM算法在流密码攻击中的实战指南 在网络安全竞赛中,线性反馈移位寄存器(LFSR)类题目一直是密码分析方向的经典题型。许多参赛者第一次接触这类题目时,往往会被其数学理论吓退,但…...
