3.1 第一个外设GPIO GPIO输出

news2024/11/18 13:43:10
  1. GPIO简介

•GPIO是通用输入输出口(俗称IO口)

•可配置为8种输入输出模式

•引脚电平:0V~3.3V(数据0是0V,数据1是3.3V),部分引脚可容忍5V.

•输出模式可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序(I2C SPI)等

•输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等.

2. GPIO整体结构

在每个GPIO模块中,主要包含了寄存器和驱动器

2.1 寄存器

寄存器是一段特殊的存储器,内核可以通过APB2总线对寄存器进行读写,为此完成输出电平和读取电平的功能。

寄存器的每一位对应一个引脚,其中输出寄存器写1,对应的引脚就会输出高电平,写0,就输出低电平。输入寄存器为1,说明对应的端口目前是高电平,读取为0,就是低电平。

但因为STM32是32位的单片机,所以STM32内部的寄存器都是32位,但只有16个端口,所以寄存器只有低16位对应的有端口,高16位并没有使用。

2.2 驱动器

驱动器是:增加信号的驱动能力。

3. GPIO每一位具体结构

3.1 GPIO位结构电路图

3.2 GPIO三种输出模式

  • 推挽输出:P-MOS和N-MOS均有效。数据寄存器为1时,上管导通,下管断开,输出直接接到VDD,输出高电平数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,输出为低电平。这种模式下,高低电平均有较强的驱动能力,所以推挽输出模式也可称为强推输出模式。

  • 开漏输出模式,P-MOS是无效的,只有N-MOS在工作数据寄存器为1时,下管断开,这时输出相当于断开,即为高阻模式数据寄存器为0时,下管导通,输出直接接到VSS,输出低电平,这种模式下只有低电平有驱动能力,高电平没有驱动能力,在多机通信的情况下,这个模式可以避免各个设备的相互干扰,还可以输出5V的电平信号。(可作为通信协议的驱动方式,比如I2C通信的引脚即为开漏模式)

  • 关闭状态:当引脚配置为输入模式的时候,两个MOS管均无效,输出关闭,端口的电平由外部信号来控制。

4. GPIO 8种工作模式

通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式

4.1 浮空/上拉/下拉输入配置

在输入模式下,输出驱动器时断开的,端口只能输入而不能输出。输入模式种,开关可以选择上拉工作、下拉工作、都不工作,分别对应上拉输入、下拉输入和浮空输入。输入通过施密特触发器进行波形整形后,连接到输入数据寄存器。

4.2 模拟输入结构

模拟输入中,输出是断开的,输入的施密特触发器也是关闭的无效状态,所以只剩下最上边线路有用,也就是从引脚直接接入片上外设,也就是ADC。所以我们可以将引脚配置为模拟输入时,就可以使用ADC。

4.3 开漏输出和推挽输出

输出是由输出数据寄存器控制,如果P-MOS无效,即为开漏输出,如果P-MOS和N-MOS都有效,就是推挽输出。并且在输入模式下,输出模式也是有效的。

4.4 复用开漏输出和复用推挽输出

类似于普通的开漏输出和推挽输出,只不过是复用的输出,引脚电平是由片上外设控制。

引脚的控制权转移到了片上外设,由片上外设来控制,在输入部分,片上外设也可以读取引脚的电平,同时普通的输入也是有效的,顺便接收一下电平信号。

5. STM32外部设备和电路

•LED:发光二极管,正向通电点亮,反向通电不亮

•有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定

•无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音

5.1 LED发光二极管

左边正极,右边负极。

5.2 有源蜂鸣器

三极管开关进行驱动,在VCC和GND分别接上正负极供电,中间引脚接低电平,蜂鸣器就会响,接高电平,蜂鸣器就关闭。

5.3 LED和蜂鸣器的硬件电路

GPIO在推挽输出模式下,高电平均有较强的驱动能力,但在单片机里,一般采用高电平弱驱动,低电平强驱动的规则。

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

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

相关文章

Javascript周学习小结(初识,变量,数据类型)

JS的三大书写方式行内式如图所示:几点说明:JS的行内式写在HTML的标签内部,(常以on开头),如onclick行内式常常使用单引号括住字符串以区分HTML的双引号可读性差,不建议使用引号易出错,不建议使用特殊情况下使…

【冲刺蓝桥杯的最后30天】day2

大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨‍💻,断更了整整一年,又开始恢复CSDN更新,从今天开始更新备战蓝桥30天系列,一共30天,如果对你有帮助或者正在备…

Java代码是如何被CPU狂飙起来的?

📣📣📣📣📣📣📣 🎍大家好,我是慕枫 🎍前阿里巴巴高级工程师,InfoQ签约作者、阿里云专家博主,一直致力于用大白话讲解技术知识 &#x…

Stable Diffusion WebUI安装instruct-pix2pix插件

instruct-pix2pix作者团队提出了一种通过人类自然语言指令编辑图像的方法。他们的模型能够接受一张图像和相应的文字指令(也就是prompt),根据指令来编辑图像。作者团队使用两个预训练模型(一个是语言模型GPT-3, 另一个是文本到图像模型Stable Diffusion)…

Python---正则表达式

专栏:python 个人主页:HaiFan. 专栏简介:Python在学,希望能够得到各位的支持!!! 正则表达式前言概念作用和特点使用场景正则符号re模块re.compile()match()search()span()findall()group()sub()…

uniapp系列-报错或常见问题处理集锦

问题一:执行完命令,就不动了,或者是uniapp 遇到编译很慢,无法正常运行的情况 情况1:执行run dev命令后,一直就不动了,输出如下 PS C:\XXXXXXXX> npx yarn run dev:h5 yarn run v1.22.19 wa…

YOLOv7实验记录

这篇博客主要记录博主在做YOLOv7模型训练与测试过程中遇到的一些问题。 首先我们需要明确YOLO模型权重文件与模型文件的使用 其实在github的readme中已经告诉我们使用方法,但我相信有很多像博主一样眼高手低的人可能会犯类似的错误。 训练 首先是训练时的设置&…

Object.defineProperty() 详解

一、对象的定义与赋值 我们经常使用的定义与赋值方法 obj.xxx value 或 obj[xxx] value,并且可以定义任意类型的值,如下所示: let obj {}; obj.name bjl; obj[age] 18; obj.sayHi function() {console.log(Hi)}; console.log(obj) /…

C语言自定义类型---进阶

之前的文章中有结构体初阶知识的讲解&#xff0c;对结构体不是很了解的小伙伴可以先去去看一下结构体初阶 结构体&#xff0c;枚举&#xff0c;联合结构体结构体类型的声明特殊的声明结构的自引用结构体变量的定义和初始化结构体内存对齐 <3 <3 <3(重点)那为什么存在内…

Unity记录2.1-动作-多段跳、蹬墙跳、墙体滑落

文章首发及后续更新&#xff1a;https://mwhls.top/4450.html&#xff0c;无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评&#xff0c;非常感谢&#xff01; 汇总&#xff1a;Unity 记录 摘要&#xff1a;实现跳跃、蹬…

若依学习(前后端分离版)——自定义注解@Log(如何自定义注解,实现aop)

如何自定义注解 aop的基本知识与应用 若依对用户的一些更新删除等敏感操作操作进行了日志记录 注解定义和切面处理的项目位置 第一步&#xff1a;自定义注解log 定义了注解的相关信息。这里定义的属性可以在使用时加以定义 注解Target和Retention的作用 第二步切面逻辑…

动手实现一遍Transformer

最近乘着ChatGpt的东风&#xff0c;关于NLP的研究又一次被推上了风口浪尖。在现阶段的NLP的里程碑中&#xff0c;无论如何无法绕过Transformer。《Attention is all you need》成了每个NLP入门者的必读论文。惭愧的是&#xff0c;我虽然使用过很多基于Transformer的模型&#x…

synchronized从入门到踹门

synchronized是什么synchronized是Java关键字&#xff0c;为了维护高并发是出现的原子性问题。技术是把双刃剑&#xff0c;多线程并发给我带来了前所未有的速率&#xff0c;然而在享受快速编程的过程&#xff0c;也给我们带来了原子性问题。如下&#xff1a;public class Main …

【微服务】认识微服务

目录 1.1 单体、分布式、集群 单体 分布式 集群 1.2 系统架构演变 1.2.1 单体应⽤架构 1.2.2 垂直应⽤架构 1.2.3 分布式架构 1.2.4 SOA架构 1.2.5 微服务架构 1.3 微服务架构介绍 微服务架构的常⻅问题 1.4 SpringCloud介绍 1.4.1 SpringBoot和SpringCloud有啥关…

[1.3_2]计算机系统概述——中断和异常

文章目录第一章 计算机系统概述中断和异常&#xff08;一&#xff09;中断的作用&#xff08;二&#xff09;中断的类型&#xff08;三&#xff09;中断机制的基本原理小结第一章 计算机系统概述 中断和异常 中断的作用中断的类型 内中断&#xff08;也称“异常”&#xff09;…

ES之DSL查询文档基础查询

分类 query查询分类 总体规律就是逻辑性的&#xff0c;从外层的你干嘛&#xff0c;到下一层的查询类型&#xff0c;再到下一层的查询字段&#xff08;如果需要的话&#xff09;和然后是查询内容 查询所有 语法 get /索引库名/_serarch {"query":{"查询条件…

【Linux】配置动态IP

动态IP 服务器重启完成之后&#xff0c;我们可以通过linux的指令 ip addr 来查询Linux系统的IP地址&#xff0c;具体信息如 下: 从图中我们可以看到&#xff0c;并没有获取到linux系统的IP地址&#xff0c;这是为什么呢&#xff1f;这是由于启动服务器时未 加载网卡&#x…

2D图像处理:Qt + Opencv使用光度立体法检测Halcon中提供的缺陷图像

文章目录 不需知道光源方向一、光度立体法(后续有时间在查资料研究)1.1 问题1:Slants和Tilts的理解(暂时是理解的)1.2 问题1:Gradient通道数为1,为何像素点对应的值会有两个?1.3 问题2:F(r,c)=(u(r,c),v(r,c)) 关于高斯曲率和平均曲率如何计算的?二、非标定光源实现光…

C++经典20题型,满满知识,看这一篇就够了(含答案)

今天找了20道c的经典题型&#xff0c;看这一篇就够了&#xff0c;全是干货 目录 1、题目&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总…

【蓝桥杯集训11】BFS(4 / 4)

目录 844. 走迷宫 - BFS求最短路 1233. 全球变暖 - BFS 845. 八数码 - 最短路BFS 状态表示 一二维坐标转换 为什么BFS保证走的是最短路&#xff1f; 一二维坐标转换&#xff08;nn矩阵&#xff09; 1562.微博转发 - BFS按层遍历 有向图 844. 走迷宫 - BFS求最短路 活…