STM32F103RCT6一共有4组IO口,一共有16*3+3=51个IO口
GPIOA0~A15
GPIOB0~B15
GPIOC0~C15
GPIOD0~D2
一、GPIO 功能描述
每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。
STM32 的 IO 口可以由软件配置成如下 8 种模式:
1、输入浮空
2、输入上拉
3、输入下拉
4、模拟输入
5、开漏输出
6、推挽输出
7、推挽式复用功能
8、开漏复用功能
每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问。(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。
VCC:C=circuit 表示电路的意思, 即接入电路的电压;
VDD:D=device 表示器件的意思, 即器件内部的工作电压;
VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压。
对于数字电路来说,VCC是电路的供电电压,VDD是芯片的工作电压(通常Vcc>Vdd),VSS是接地点。例如,对于ARM单片机来说,其供电电压VCC一般为5V,一般经过稳压模块将其转换为单片机工作电压VDD = 3.3V。
TTL肖特基触发器:将模拟信号转化为数字信号,这里有一个阈值电压的概念,比如从低到高达到多少才会导通,从高到底多少才会关闭。
二、GPIO工作方式(重要)
4种输入模式:
输入浮空
输入上拉
输入下拉
模拟输入
4种输出模式:
开漏输出
开漏复用功能
推挽式输出
推挽式复用功能
3种最大翻转速度:
-2MHZ
-10MHz
-50MHz
①输入浮空模式(GPIO_Mode_IN_FLOATING)
输入浮空的时候走的是黄色的部分,顺序为①——④。再输入浮空的时候上拉和下拉的两个开关(即②和①之间的开关)是断开的,输入电平从①处输入进去,经过施密特触发器(这时施密特触发器是打开的),电平直接传到输入数据寄存器,然后CPU就可以通过读取输入数据寄存器得到外部输入电平的值。即在输入浮空模式下,我们可以读取外部的电平。
输入浮空一般多用于外部按键输入,在浮空输入状态下,IO状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
②输入上拉(GPIO_Mode_IPU)
输入上拉和输入浮空的区别就是上拉电阻(30-50K)是接通的。
CPU通过读取输入数据寄存器的值来得到输入高低电平的值。
上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平,而在信号输入为低电平时输入端的电平应该也为低电平。如果没有上拉电阻,在没有外界输入的情况下输入端是悬空的,它的电平是未知的无法保证的,上拉电阻就是为了保证无信号输入时输入端的电平为高电平。
③输入下拉(GPIO_Mode_IPD)
输入下拉就是下拉电阻是接通的。
下拉电阻就是为了保证无信号输入时输入端的电平为低电平。
④模拟输入(GPIO_Mode_AIN)
将外部的模拟量转换成数字量。外部的输入是模拟的,将其转换成数字量。 作为模拟输入一般是0-3.3v。
应用于ADC模拟输入,或者低功耗下省电。
⑤开漏输出(GPIO_Mode_Out_OD)
MOS管部分可看作如下电路:
开漏输出模式下,CPU可以写寄存器(位设置/清除寄存器),比如写1,最终会被映射到输出数据寄存器,输出数据寄存器连通的是输出控制电路,如果我们的输出是1,N-MOS管就处于关闭状态(P-MOS从不被激活),这时IO端口的电平就不会由我们输出的1来决定,因为N-MOS管已经截止了,所以IO口的电平是由外部的上拉或下拉决定。在输出模式下,输出的电平也可以通过输入电路读取到输入数据寄存器,然后被CPU读取。
所以,当我们输出1时,我们读取的输出电平可能不是我们输出的1,读取的值是由外部的上拉或下拉决定的。当我们的输出是0,这时N-MOS管处于开启状态,IO口的电平就会被N-MOS管拉到Vss,这时IO口的电平输出就为0,CPU通过输入电路读取IO口的电平也就为0。
输出端相当于三极管的集电极。要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般 20mA以内)。
开漏形式的电路有以下几个特点:
①利用外部电路的驱动能力,减少 IC (集成电路)内部的驱动。当 IC 内部 MOSFET(金属-氧化物半导体场效应晶体管,简称金氧半场效晶体管,可分为“N型”与“P型”,通常又称为NMOSFET与PMOSFET,其他简称尚包括NMOS、PMOS) 导通时,驱动电流是从外部的VCC 流经 R pull-up(上拉电阻) ,MOSFET 到 GND。IC 内部仅需很下的栅极驱动电流。
②一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻。
③开漏输出提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。
⑥复用开漏输出(GPIO_Mode_AF_OD)
复用开漏输出和开漏输出的区别就是输出1和0的来源不同,开漏输出是由CPU写入的,映射到输出数据寄存器连通到输出电路,而复用开漏输出是由复用功能输出决定的,即来自片上的外设,其他的地方都一样。
复用开漏输出、复用推挽输出可以理解为GPIO口被用作第二功能时的配置情况(比如串口USART),即并非作为通用IO口。
⑦推挽输出(GPIO_Mode_Out_PP)
推挽输出控制输出的寄存器和开漏输出是一样的,当输出为1,这时P-MOS管被导通,N-MOS管截止,输出的1就被传输到IO端口,当输出为0,P-MOS管截止,N-MOS管导通,输出的0就被传输到IO口。同样,我们也可以通过输入电路读取IO口的输出。
推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由 IC 的电源低定。
推挽电路是两个参数相同的三极管或 MOSFET, 以推挽方式存在于电路中, 各负责正负半周的波形放大任务, 电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
⑧复用推挽输出(GPIO_Mode_AF_PP)
复用推挽输出和推挽输出的区别也输出1和0的来源不同,其它的地方都一样。
复用开漏输出、复用推挽输出可以理解为GPIO口被用作第二功能时的配置情况(比如说串口),即并非作为通用IO口。
上电复位后,GPIO默认为浮空状态,部分特殊功能引脚为特定状态。
复位后,JTAG引脚被置于输入上拉或下拉模式:
─ PA15:JTDI置于上拉模式
─ PA14:JTCK置于下拉模式
─ PA13:JTMS置于上拉模式
─ PB4: JNTRST置于上拉模式
当作为输出配置时,写到输出数据寄存器上的值(GPIOx_ODR)输出到相应的I/O引脚。可以以推挽模式或开漏模式(当输出0时,只有N-MOS被打开)使用输出驱动器。输入数据寄存器(GPIOx_IDR)在每个APB2时钟周期捕捉I/O引脚上的数据。所有GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时,它们可以被激活也可以被断开。
上一篇:正点原子STM32学习笔记——通用定时器基本原理
下一篇:正点原子STM32笔记——DMA原理
推荐阅读最新更新时间:2024-11-11 10:35
推荐帖子
- 高性能X波段直接式频综的设计
- 介绍一种X波段直接式频综的设计方案,对其输出杂散进行分析,并给出研制结果,在10GHz的输出频率上,偏离载频1kHz处的相噪为-108dBcHz,杂散优于-70dBc,跳频时间小于0.7Ls,可捷变40个点。高性能X波段直接式频综的设计
- JasonYoo 电源技术
- EEWORLD大学堂----直播回放: Microchip RISC-V 安全之地
- hi5 综合技术交流
- ant基本天线阵 附带PPT哦
- ant基本天线阵附带PPT哦
- btty038 RF/无线
- HEF4051是哪个常用芯片的替代品,想看一下与它相同功能的常用芯片的应用资料
- HEF4051是哪个常用芯片的替代品,这个芯片的应用资料太少,想看一下与它相同功能的常用芯片的应用资料。谢谢大家。HEF4051是哪个常用芯片的替代品,想看一下与它相同功能的常用芯片的应用资料CD4051。如果使用正负5V的电源电压,还可以考虑74HC4051、CD74HC4051。想看一下与它相同功能的常用芯片的应用资料HEF4051是单8路模拟开关。你要看的是各种模拟开关如何工作。
- 深圳小花 PCB设计
- 多路复用的LED设计程序怎么写?(急.急.急...)
- 最普通的行列矩阵式驱动,可以用N+M个IO驱动N*M个LED。而这种被叫做Charlieplexing的方法可以用N个IO驱动N*(N-1)个LED。也就是说要驱动6个LED,用行列式需要5个口,而这种方法只要3个。LED也多,节省的IO越多。比方说驱动20个LED,行列式要用9个,而这种只要5个。这么做有个前提,IO口要有三种状态:高电平输出、低电平输出、高阻输入,利用“行列分时复用”的思想,设计电路。如下图:用汇编语言如何进行程序编写?(80c51)哪位兄弟能发
- zd169 嵌入式系统
- DIY led贴片灯制作方法,不易错过
- 为了让广大的电子爱好者和电子DIY发烧友能够自己制作简易的贴片LED节能灯,现博主特意为广大的朋友奉献一款贴片LED节能灯的制作资料和贴片LED灯的简易制作过程包含贴片LED节能灯制作电路图,以下是10贴片LED灯的制作电路图:如图是一款贴片LED照明灯具的实用电路图,该灯使用220V电源供电,220V交流电经C1降压电容降压后经全桥整流再通过C2滤波后经限流电阻R3给串联的10颗贴片LED提供恒流电源.贴片LED的额定电流为20mA,但是我们在制作节能灯的时候要考虑很多方
- 探路者 LED专区
设计资源 培训 开发板 精华推荐
- NCP5183SYNCBUCKGEVB:可变直流输入、开环同步降压评估板
- SwarmDrive:基于 ESP32的电机实验的开发板
- 使用 Analog Devices 的 LTC3621EDCB-3.3 的参考设计
- NCV890203MWGEVB:具有复位和可调延迟的 2A 2MHz 汽车开关降压稳压器评估板
- 使用东芝分立器件的 300W 隔离式 DC-DC 转换器
- 使用 Microchip Technology 的 SY88722V 的参考设计
- LM2931AZ50R 具有抑制功能的超低压降稳压器典型应用电路
- ABX8XX-SPI-EVK,评估超低功耗产品中完整功能集的评估套件
- MC78L12A 0.1A正压稳压器典型应用
- EVAL-ADM1031,基于 ACPI 温度监视器和 ADM1031 PWM 风扇控制器的评估板