(嵌入式系列)STM32系列单片机的GPIO简介

简介: (嵌入式系列)STM32系列单片机的GPIO简介

STM32系列单片机以其较好的性能,丰富的片上资源,成为当今嵌入式行业最经典、最常用的单片机之一。其通用输入输出接口(GPIO)多样的工作方式亦是其优势之一。本文将从原理上解释其工作过程。先来看看GPIO几种工作模式的总体情况。

从上图中可以看出,GPIO共有4种输入模式和4种输出模式。

1输出模式

1.1 推挽输出

从中文的字面意思来理解,推挽就是推拉的意思,在此模式下,对于负载来说,分别有两个电流方向,故而得名。也可以参考模拟电路里的乙类放大电路。如下图所示。

在输出高电平时,P-MOS导通,N-MOS截止,而在输出低电平时,恰好相反P-MOS截止,N-MOS导通。这样单片机就可以通时输出高电平和低电平了。很好理解。

1.2 开漏输出

在这个模式的时候,只有N_MOS可以工作,且其漏极处于开路的状态,故而得名“开漏输出”。如下图所示。

从上图中可以看出,如果不接外部的负载RL,则对于单片机内部而言,N_MOS的漏极处于开路状态,因而当N_MOS导通的时候,输出低电平,当N_MOS关断的时候输出高阻态。那如何输出高低电平呢?

这个时候就需要外接上拉电阻。

此时,当单片机N_MOS导通的时候,输出低电平,当N_MOS关断的时候输出高电平。那么这么做的意义是什么呢?单片机本身就可以同时输出高电平和低电平,何必搞这么麻烦?

这里就和实际的使用需求有关系了

  1. 比方说有的负载需要较高的电压值,而单片机缺不能实现,这个时候就可以采用开漏输出,上图中可以提供约5V的输出电压。
  2. 要实现“线与”,意思就是说,只要有一个IO口输出低电平,则输出低电平,全为高电平时才输出高电平,当用硬件实现的时候,会发现,如果采用推挽输出的方式,必然会出现一个P-MOS和N-MOS同时导通的情况,这个时候可能会出现将管子烧坏的情况。

1.3 复用推挽输出

从电路中可以看出,复用推挽输出和推挽输出并没有太大区别,区别仅仅在于触发源不一样, 单纯的推挽输出是在软件中手动地设置01实现的。而复用推挽输出指的是在某些模式下,启用了引脚的复用功能,这个时候需要设置该引脚为复用推挽输出,因为这个时候开发人员只需要配置相应的寄存器(参数),不需要关注具体的引脚电平。

1.4 复用开漏输出

参考复用推挽输出部分。

其实在IIC通信协议中(对于主设备而言),SCL可以配置为推挽输出,因为只需要输出时钟信号,而SDA除了输出数据信号,同时还需要扫描输入的应答信号,这个时候就需要配置为开漏输出,当然,若将两根线都配置为开漏输出,也没有问题,这个时候两根线都需要配置上拉电阻。

2 输入模式

了解了上面的内容,四种输入模式相对来说就很好理解了。

2.1 浮空输入

顾名思义,对于单片机来说,此时的输入引脚处于高阻态,需要外部同时提供高电平和低电平,因为在该模式下,内置上拉电阻和下拉电阻都没有生效。而内部的TTL肖特基触发器相当于斯密特触发器,用于对输入信号进行“整形”,将其转化为理想的TTL电平后传入输入数据寄存器,等待CPU读取。

2.2 上拉输入

所谓的上拉输入就是内部的上拉电阻投入使用。这个时候当外部输入低电平时可正常输入低电平,而当外部无输入信号(高阻态)时,可由单片机自身的上拉电阻提供高电平信号。

上图为当外部引脚配置为上拉输入时,外部引脚为高阻态时的电流通路。

2.3 下拉输入

下拉输入与上拉输入正好相反,这个时候当外部输入低电平时可正常输入高电平,而当外部无输入信号(高阻态)时,可由单片机自身的下拉电阻提供低电平信号。

2.3 模拟输入

只有在此模式下,输入才为模拟信号,因为其他模式输入模拟信号没有任何意义,经过了肖特基触发器,全都变成了数字信号。这时候上拉和下拉电阻也没有起到作用,电平直接由外部输入, 传输到内部的AD转换器单元将其转换为数字信号,等待CPU处理。

温馨提示:若要十分透彻地理解以上的内容,需要自己补充一些模电和数电的相关知识。

-------------------------------------------------------------END-------------------------------------------------------------

相关文章
|
2月前
|
传感器 监控 JavaScript
千套单片机\stm32毕设课设题目及资料案列-干货分享
为帮助电子工程领域的学习者顺利毕业或掌握更多专业知识,我们精心整理了一系列单片机和STM32相关的题目及资料案例。这些资源覆盖了从毕业设计到课程设计的各个方面,包括但不限于智能小车、温度控制系统、无线通信、智能家居等多个领域。每项设计都配有详细的原理图、仿真图以及完整的文档资料,旨在帮助学生深入理解理论知识的同时,提高实际动手操作能力。无论是初学者还是有一定基础的学生,都能从中找到适合自己的项目进行实践探索。
375 8
|
5月前
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
|
6月前
|
物联网 Linux 芯片
学习嵌入式是选择单片机还是Linux?
单片机通常指的是一种集成了处理器、存储器和各种外设接口的微控制器芯片,常见的有STC、51系列、AVR、ARM Cortex-M等。单片机具有低成本、低功耗、实时性强等特点,适用于对资源要求较低、功耗要求较低、实时性要求较高的嵌入式系统。学习单片机开发可以让您深入了解嵌入式系统的底层原理和硬件编程,对于对嵌入式系统底层开发感兴趣的人来说,是一个很好的选择。
146 4
|
6月前
|
Web App开发 传感器 Linux
【嵌入式软件工程师面经】STM32单片机
【嵌入式软件工程师面经】STM32单片机
170 1
|
5月前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
218 0
|
6月前
经验大分享:STM32F4寄存器初始化系列:GPIO
经验大分享:STM32F4寄存器初始化系列:GPIO
37 0
|
6月前
|
存储 数据安全/隐私保护 芯片
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
|
7月前
|
缓存 网络协议 算法
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)