STM32-2-GPIO

发布者:快乐的舞蹈最新更新时间:2024-10-16 来源: cnblogs关键字:STM32  GPIO  配置种类 手机看文章 扫描二维码
随时随地手机看文章

最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多:
(1)GPIO_Mode_AIN 模拟输入 
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入 
(4)GPIO_Mode_IPU 上拉输入 
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出 
(8)GPIO_Mode_AF_PP 复用推挽输出
对于刚入门的新手,我想这几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但一直未曾对这些做过归纳。因此,在这里做一个总结:
推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
详细理解:

如图所示,推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。对负载而言,好像是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。当输出高电平时,也就是下级负载门输入高电平时,输出端的电流将是下级门从本级电源经VT3拉出。这样一来,输出高低电平时,VT3 一路和 VT5 一路将交替工作,从而减低了功耗,提高了每个管的承受能力。又由于不论走哪一路,管子导通电阻都很小,使RC常数很小,转变速度很快。因此,推拉式输出级既提高电路的负载能力,又提高开关速度。

开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).
开漏形式的电路有以下几个特点:
1. 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。
2. 一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)
3. OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。
4. 可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。补充:什么是“线与”?:
在一个结点(线)上, 连接一个上拉电阻到电源 VCC 或 VDD 和 n 个 NPN 或 NMOS 晶体管的集电极 C 或漏极 D, 这些晶体管的发射极 E 或源极 S 都接到地线上, 只要有一个晶体管饱和, 这个结点(线)就被拉到地线电平上. 因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS), 晶体管就会饱和, 所以这些基极或栅极对这个结点(线)的关系是或非 NOR 逻辑. 如果这个结点后面加一个反相器, 就是或 OR 逻辑.
其实可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。
关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:


该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。右边的则可以理解为开漏输出形式,需要接上拉。
浮空输入:对于浮空输入,一直没找到很权威的解释,只好从以下图中去理解了


由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
上拉输入/下拉输入/模拟输入:这几个概念很好理解,从字面便能轻易读懂。
复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)
最后总结下使用情况:
在STM32中选用IO模式
(1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1
(2)带上拉输入_IPU——IO内部上拉电阻输入
(3)带下拉输入_IPD—— IO内部下拉电阻输入
(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电
(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)
(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)


GPIO库函数:  
函数名        描述  GPIO_DeInit     将外设GPIOx寄存器重设为缺省值  
GPIO_AFIODeInit  将复用功能(重映射事件控制和EXTI设置)重设为缺省值
GPIO_Init    根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器
GPIO_StructInit    把GPIO_InitStruct中的每一个参数按缺省值填入
GPIO_ReadInputDataBit  读取指定端口管脚的输入  
GPIO_ReadInputData   读取指定的GPIO端口输入  
GPIO_ReadOutputDataBit  读取指定端口管脚的输出  
GPIO_ReadOutputData   读取指定的GPIO端口输出  
GPIO_SetBits     设置指定的数据端口位  
GPIO_ResetBits    清除指定的数据端口位  
GPIO_WriteBit     设置或者清除指定的数据端口位  
GPIO_Write     向指定GPIO数据端口写入数据  
GPIO_PinLockConfig   锁定GPIO管脚设置寄存器  
GPIO_EventOutputConfig  选择GPIO管脚用作事件输出  
GPIO_EventOutputCmd   使能或者失能事件输出  
GPIO_PinRemapConfig   改变指定管脚的映射  
GPIO_EXTILineConfig   选择GPIO管脚用作外部中断线路


关键字:STM32  GPIO  配置种类 引用地址:STM32-2-GPIO

上一篇:STM32中GPIO的8种工作模式
下一篇:STM32-1-STM32时钟系统

推荐阅读最新更新时间:2026-03-25 10:30

STM32GPIO的这八种配置种类你知道几种?
在Cortex-M3里,对于GPIO的配置种类有8种: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 1、推挽输出 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效
[单片机]
<font color='red'>STM32</font>中<font color='red'>GPIO</font>的这八种<font color='red'>配置</font><font color='red'>种类</font>你知道几种?
STM32单片机学习】第8章 GPIO—LED点灯
本章实验的目的是通过LED点灯,让读者熟悉STM32F103最基本的外设GPIO。首先介绍了GPIO的一些基本概念和知识,然后介绍开发板LED灯部分硬件设计,再结合硬件进行软件设计,最后展示实验效果。本章阅读提示:8.1 关于GPIO(介绍GPIO的一些知识,刚开始概念有些多,读者慢慢理解)8.2 硬件设计(分析LED灯部分的硬件设计和RGB灯,需要理解)8.3 软件设计(讲解如何编写LED程序,需要重点理解)8.4 实验效果(展示实验效果,操作即可) 8.1 关于GPIO GPIO(General-Purpose IO ports,通用输入/输出接口),用于感知外界信号(输入模式)和控制外部设备(输出模式),如图 6.1
[单片机]
【<font color='red'>STM32</font>单片机学习】第8章 <font color='red'>GPIO</font>—LED点灯
STM32GPIO口操作与输出实战指南
一、RCC和GPIO两个外设库常用函数 1.RCC_AHB外设时钟控制 void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); @ brief 启用或禁用AHB外设时钟。 @ param RCC_AHBPeriph:指定要控制其时钟的AHB外设。 对于 @ STM32互联型设备,此参数可以是以下值的任意组合: • @arg RCC_AHBPeriph_DMA1 • @arg RCC_AHBPeriph_DMA2 • @arg RCC_AHBPeriph_SRAM • @arg RCC_AHBPeriph_FLITF
[单片机]
【<font color='red'>STM32</font>】<font color='red'>GPIO</font>口操作与输出实战指南
STM32单片机复位后GPIO电平状态
stm32单片机gpio共有八种工作模式,如下图: stm32单片机是一个低功耗的处理器,当复位以后,gpio默认是高阻状态,也就是浮空输入。这样的好处是: 1.降低了单片机的功耗 2.把gpio模式的选择权交给用户 3.在用户使用的时候,都会在gpio外加一个上拉或下拉电阻,这样当单片机复位以后就能够清楚的知道引脚的电平情况
[单片机]
<font color='red'>STM32</font>单片机复位后<font color='red'>GPIO</font>电平状态
明解STM32GPIO理论基础知识篇之八种工作模式
一、引言 在之前围绕STM32的GPIO的基本结构进行了介绍,图1为STM32的5V容忍的GPIO口内部基本结构图,图2为GPIO的基本结构中各个模块部分的概述。 阅读GPIO基本结构的内容能够对GPIO的工作模式有更深的了解。正是由于GPIO的结构中包含了多样性的电路和模块,因此进行合理的配置组合,就可以使得GPIO应用在不同的工作模式下进行工作。 图1 STM32的5V容忍的GPIO内部基本结构 图2 GPIO基本结构包含的功能概述 二、工作模式概述 图3为STM32的GPIO工作模式概述图,从图中可以看出,GPIO端口的静态特征就是指芯片可供你选择的该GPIO的配置,只有通过对使用的GPIO
[单片机]
明解<font color='red'>STM32</font>—<font color='red'>GPIO</font>理论基础知识篇之八种工作模式
明解STM32GPIO理论基础知识篇之寄存器原理
一、前言 在之前的STM32的GPIO理论基础知识中,分别对基本结构和工作模式进行了详细的介绍。GPIO基本结构中主要对GPIO内部的各个功能电路逐一的进行的分析;GPIO工作模式中主要介绍GPIO应用在不同的使用场景下,GPIO端口的静态特征配置和动态的工作模式,同时对信号的工作流进行了分析。 这一篇主要对GPIO模块使用到的寄存器进行详细的分析介绍,适当了解GPIO寄存器的相关知识,可以对GPIO最底层的一些配置和工作原理有更好的认识,有助于加深对GPIO基本结构及工作模式的理解,同时对后续介绍到的GPIO在应用设计中有较好的帮助。 二、寄存器概述 图1为STM32的GPIO模块中寄存器的概述,总共有
[单片机]
明解<font color='red'>STM32</font>—<font color='red'>GPIO</font>理论基础知识篇之寄存器原理
STM32学习笔记(四)GPIO(General-Purpose I/Os)
输出方式 推挽输出(Push-Pull) 推挽输出电路 若 INT 输入为 0,则 PMOS 截止,NMOS 导通,产生灌电流,输出 OUT 为 0; 若 INT 输入为 1,则 NMOS 导通,PMOS 截止,产生拉电流,输出 OUT 为 1; 推挽输出特点 同时具有高低电压的驱动能力,即高低电平切换所需时间短,反应快; 无法实现线与功能(即禁止输出之间短接); 结型场效应管的特性(G与D、S近乎绝缘)使得电功率极小; 高低电平均由内部 IC 电平决定,通常为一定值; 开漏输出(Open-Drain) 即 漏极(Drain) 一端什么都不接,直接连接 输出端口 开漏输出电路 若 INT 输入为 0,则
[单片机]
STM32学习(二)GPIO推挽输出实验
以 LED 和 BEEP 模块为例,讲解 GPIO 推挽输出模式的使用。 硬件平台 STM32学习 系列文章,如未特殊说明,默认是使用 STM32F407 主芯片,后续文章不再单独说明。 GPIO初始化 主要代码 这里以 LED0 为例,LED1 和 BEEP 代码同理,都是用推挽输出模式 开启 GPIO 时钟 使用 GPIO 之前,必须先开启对应的时钟; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); GPIO 结构体初始化 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved