STM32之GPIO输出与输出
欢迎来到 破晓的历程的 博客
⛺️不负时光,不负己✈️
文章目录
一.GPIO输入
1.1GPIP简介
1.2GPIO基本结构
在STM32中,所有的GPIO都是挂载在APB2外设总线上的,其中GPIO外设的名称是按照GPIOA,GPIOB,GPIOC等等这样来命名的。
每个GPIO外设一共16个引脚,编号是从0到15,比如:GPIO的第0号引脚我们一般称之为PA0,接着就是PA1…一直到PA15
输入模式下可读取端口的高低电平或电压,用于读取按键输入「这是最常见的一种方式」,外接模块电平信号输入,ADC电压采集,模拟通信协议接收数据等等。
在每个GPIO的模块内,主要包含驱动器和寄存器这些东西,寄存器就是一段特殊的存储器,内核可以通过APB2总线对寄存器进行读写,这样就可以实现输出电平和读取电平的功能了。
寄存器的每一位对应一个输出引脚,其中输出寄存器写1,对应的引脚就会输出高电平;写0,就会输出低电平。输入寄存器读取为1,就证明对应的端口目前是高电平,读取为0,就是低电平
因为STM32是32位的单片机,所以STM32内部都是32位的,但是这个端口只有16位,所以这个寄存器只有低16位对应的有端口,高16位是没有用到的
这个驱动器是用来增加信号的驱动能力的,寄存器只负责存储数据,如果要用来点灯操作的话,还是要驱动器来负责增大驱动的能力的
1.3GPIO位结构
位带
区域,这个位带的作用就和STM32中的位寻址的作用差不多,在STM32中,有一段区域映射了RAM和外设寄存器所有的位,读写这段地址中的区域,就相当于读写所映射位置的某一位一样1.4GPIO的八种模式
通过配置GPIO的端口配置寄存器,端口可以配置成以下几种模式:
模式编号 | 模式名称 | 描述 |
---|---|---|
0 | 输入浮空 (Input Floating) | GPIO引脚被配置为高阻态,既不拉高也不拉低,适合用于检测外部电平变化。 |
1 | 输入上拉 (Input Pull-up) | 内部上拉电阻使引脚在没有外部信号时呈现高电平。 |
2 | 输入下拉 (Input Pull-down) | 内部下拉电阻使引脚在没有外部信号时呈现低电平。 |
3 | 输出推挽 (Output Push-Pull) | 引脚可以主动驱动高电平或低电平,适用于驱动LED等负载。 |
4 | 输出开漏 (Output Open-Drain) | 引脚只能主动拉低,需要外部上拉电阻来提供高电平。 |
5 | 复用推挽 (Alternate Function Push-Pull) | 将引脚配置为复用功能,如UART、I2C等,并以推挽方式输出。 |
6 | 复用开漏 (Alternate Function Open-Drain) | 将引脚配置为复用功能,如UART、I2C等,并以开漏方式输出。 |
7 | 模拟 (Analog) | 引脚被配置为模拟输入,用于ADC等模拟信号处理。 |
每种模式都有其特定的应用场景,选择正确的模式对于确保电路正确工作至关重要。例如,如果要使用GPIO引脚作为数字输入来读取按钮状态,可以选择输入上拉或下拉模式;如果要用作LED驱动,则输出推挽模式可能是更好的选择。对于像I2C这样的通信协议,通常会使用输出开漏或复用开漏模式,因为这些协议通常需要外部上拉电阻来确保总线处于正确的电平。
1.4.1浮空/上拉/下拉输入
在输入模式下,输出功能关闭
1.4.2 模拟输入
模拟输入:ADC模数转换器的专属配置,其他时候一般用不到模拟输入
1.4.3 推挽输出\开漏输出
在输出模式下:也是可以进行输入的
引脚的控制权转移到了片上外设,由片上外设来控制,在输入部分,片上外设也可以读取引脚的电平,同时普通的输入也是有效的,顺便接收一下信号
在GPIO的八种模式中,除了模拟信号这个模式会关闭数字的输入功能,在其他的7个模式中,所有的输入都是有效的
二.GPIO输入
2.1.按键介绍
所以我们要对这个抖动进行过滤,否则就会出现按键按一下,单片机会反应多次的现象。另外在按键松手时,也会有抖动的现象,这个我们在程序中也要学会过滤。最简单的过滤方法就是加一段延时,把震荡的一段时间给延时过去
2.2传感器模块介绍
传感器模块:传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出
2.3按键电路
作者:破晓的历程