3.1 第一个外设GPIO GPIO输出

  1. GPIO简介

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

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

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

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

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

2. GPIO整体结构

3.1 第一个外设GPIO GPIO输出_第1张图片

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

2.1 寄存器

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

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

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

2.2 驱动器

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

3. GPIO每一位具体结构

3.1 GPIO位结构电路图

3.1 第一个外设GPIO GPIO输出_第2张图片

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种模式

3.1 第一个外设GPIO GPIO输出_第3张图片

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

3.1 第一个外设GPIO GPIO输出_第4张图片

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

4.2 模拟输入结构

3.1 第一个外设GPIO GPIO输出_第5张图片

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

4.3 开漏输出和推挽输出

3.1 第一个外设GPIO GPIO输出_第6张图片

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

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

3.1 第一个外设GPIO GPIO输出_第7张图片

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

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

5. STM32外部设备和电路

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

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

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

5.1 LED发光二极管

3.1 第一个外设GPIO GPIO输出_第8张图片

左边正极,右边负极。

3.1 第一个外设GPIO GPIO输出_第9张图片

5.2 有源蜂鸣器

3.1 第一个外设GPIO GPIO输出_第10张图片
3.1 第一个外设GPIO GPIO输出_第11张图片

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

5.3 LED和蜂鸣器的硬件电路

3.1 第一个外设GPIO GPIO输出_第12张图片

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

你可能感兴趣的:(stm32学习,stm32,单片机,学习)