STM32的8种输入输出方式
STM32端口输入输出模式配置

STM32端⼝输⼊输出模式配置STM32的IO⼝模式配置根据数据⼿册提供的信息,stm32的io⼝⼀共有⼋种模式,他们分别是:四种输⼊模式上拉输⼊:通过内部的上拉电阻将⼀个不确定的信号通过⼀个电阻拉到⾼电平。
下拉输⼊:把电压拉到GND。
与上拉原理相似。
浮空输⼊:引脚内部什么都不接,处于浮空模式下,电平状态是不确定的。
外部信号输⼊什么,IO⼝就是什么状态。
模拟输⼊:接收到的是连续的模拟信号,⼀般⽤于AD转换。
四种输出模式推挽输出:可以输出⾼低电平,连接数字器件。
在stm32中推挽电路由两个MOS管组成:输出⾼电平时P-MOS管导通,引脚联通VDD(3.3v)。
输出低电平时N-MOS导通,引脚联通GND。
**该⽅式既提⾼电路的负载能⼒,⼜提⾼开关速度。
**开漏输出:⽆法直接输出⾼电平,要在外部连接上拉电阻才⾏,输出的电压由上拉电阻连接的电源决定。
适合做电流型的驱动,其吸收电流的能⼒相对强(⼀般20ma以内)。
开漏输出还有⼀个特性:线与。
即很多开漏模式引脚连接在⼀起,只有当所有引脚都输出1时,才能够被上拉电阻拉到⾼电平。
若有⼀个引脚为低电平,则所有引脚相当于接地。
复⽤推挽输出:简单来说就是给内部外设使⽤的推挽输出模式,复⽤开漏输出:简单来说就是给内部外设使⽤的开漏输出模式在STM32中,根据不同的使⽤场景,选⽤不同的IO模式:GPIO_Mode_AIN:模拟输⼊,⼀般⽤作模数转换GPIO_Mode_IN_FLOATING:浮空输⼊,常⽤在key识别上**GPIO_Mode_IPD: **下拉输⼊--- IO内部下拉电阻输⼊GPIO_Mode_IPU:上拉输⼊--- IO内部上拉电阻输⼊GPIO_Mode_Out_OD:开漏输出---可以外接上拉电阻输出较⾼的电平,也能够通过读取IO的电平变化实现C51的IO双向功能。
**GPIO_Mode_Out_PP: **推挽输出---IO输出0-接GND,IO输出1 -接VCC,读输⼊值是未知的。
STM32的输入输出管脚配置

STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出)①浮空输入_IN_FLOATING②带上拉输入_IPU③带下拉输入_IPD④模拟输入_AIN⑤开漏输出_OUT_OD⑥推挽输出_OUT_PP⑦复用功能的推挽输出_AF_PP⑧复用功能的开漏输出_AF_OD1.1I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O 口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。
通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能(EMI是Electro Magnetic Interference的缩写,即电磁干扰;EMC是Electro Magnetic Compatibility的缩写,指电磁兼容性)。
当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。
比如:1.1.1 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
1.1.2 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。
1.1.3 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。
1.2 GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。
1.3 在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
1.4 所有端口都有外部中断能力。
STM32中GPIO的8种工作模式总结

STM32 中GPIO 的8 种工作模式总结
一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。
高低电平由IC 的电源决定。
形象点解释:推挽,就是有推有拉,任何时候IO 口的电平都是确定的,不需要外接上拉或者下拉电阻。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路
中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。
输出既可以向负载灌电流,也可以从负载抽取电流。
推拉式输出级既提高电路的负载能力,又提高开关速度。
二、开漏输出:
开漏,就等于输出口接了个NPN 三极管,并且只接了E,B,而C 极是开
路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出
1 的时候,就可以是5V 电压,也可以是3.3V 电压了,但是不接电阻上拉的
时候,这个输出高就不能实现了。
输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。
适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA 以内)。
开漏形
式的电路有以下几个特点:。
STM32单片机的八种IO口模式解析

STM32单片机的八种IO口模式解析
STM32八种IO口模式区别
(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)GPIO_Mode_AIN模拟输入
即关闭施密特触发器,将电压信号传送到片上外设模块(不接上、下拉电阻)
(2)GPIO_Mode_IN_FLOATING浮空输入
浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的
(3)GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入
一般来讲,上拉电阻为1K-10K,电阻越小,驱动能力越强
电阻的作用:防止输入端悬空,减少外部电流对芯片的干扰,限流;,增加高电平输出时的驱动能力。
上拉输入:在默认状态下(GPIO引脚无输入)为高电平
下拉输入:在默认状态下(GPIO引脚无输入)为低电平
(4)GPIO_Mode_Out_OD开漏输出
开漏输出:输出端相当于三极管的集电极。
要得到高电平状态需要上拉电阻才行。
适合于做电流型的驱动,。
推荐-第4章 stm32单片机通用输入输出GPIO 精品

为了使不同器件封装的外设IO功能的数量达到最优,可以把一些复用 功能重新映射到其它一些引脚上,这可以通过软件配置相应的寄存器 来完成。
USART3_TX 的默认引出脚是 PB10, USART3_RX 的默认引出脚是 PB11;重映射 后,USART3_TX 的引出脚为 PD8,变更 USART3_RX 的引出脚为PD9
STM32 引脚
PC口 16脚 PD口 3脚
PA口 16脚
PB口 16脚
STM32F103RBT6 包含4个端口: PA口 、PB口、PC口、PD口,共有 51个I/O管脚: PA口 16脚+ PB口16脚+ PC口16脚+ PD口3脚。
4.1 STM32F10x的输入/输出基本结构
4.2 GPIO相关功能寄存器
STM32单片机 最多有7个16位的并行 I/O端口: PA、PB、PC、PD、PE、PF、PG。
STM32F103Cx、103Rx单片机 只有4个16位的 并行 I/O端口:PA、PB、PC、PD。
STM32 引脚
PC口 3脚 PD口 2脚
PA口 16脚
PB口 16脚
STM32F103CBT6 包含4个端口: PA口 、PB口、PC口、PD口,共有 37个I/O管脚: PA口 16脚+ PB口16脚+ PC口3脚+ PD口2脚。
STM32F10x处理器的每个GPIO端口都对应有: 2个32位配置寄存器(GPIOx-CRL,GPIOx-CRH) 2个32位数据寄存器(GPIOx-IDR,GPIOx-ODR) 1个32位置位/复位寄存器(GPIOx-BSRR) 1个16位复位寄存器(GPIOx-BRR) 1个32位锁定寄存器(GPIOx-LCKR)
STM32的八种GPIO工作方式详解

STM32的八种GPIO工作方式详解STM32的GPIO介绍STM32引脚说明GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。
GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。
STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。
通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。
STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟) 中有详细的介绍。
GPIO基本结构每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介绍。
这边的电路图稍微提一下:保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。
当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。
但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。
P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。
这里的电路会在下面很详细地分析到。
TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。
但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。
ADC外设要采集到的原始的模拟信号。
这里需要注意的是,在查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着。
STM32微处理器 GPIO接口定义

例如:读取GPIOE.5引脚输出值 GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_5);
GPIO_ReadOutputData()函数是读取指定IO口16个引脚的输出值, 也就是读取寄存器ODR的值
IO端口低配置寄存器CRL描述,如下图1所示。 该寄存器的复位值为:
0X4444 4444 既配置端口为浮空输入模式
STM32
认识STM32的IO口
2. STM32的IO端口寄存器
② 端口高配置寄存器CRH
CRH的作用和CRL完全一样,CRH控制的是高8位输出口。 例如:设置GPIOC的11位为上拉输入,12位为推挽输出,输出速率为
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
通过这3个语句,设置了PC11为上拉输入,PC12为推挽输出、速率为50MHz。
STM32
认识STM32的IO口
2. STM32的IO端口寄存器
例如:设置GPIOC的11位为上拉输入,12位为推挽输出,输出速率为50MHz
。若采用stm32f10x_gpio.c文件中的GPIO_Init函数设置,代码如下:
设连接的时候很有优势,具体哪些IO口是5V兼容的,可从数据 手册引脚描述查到(I/O Level标FT的就是5V电平兼容的)。
《嵌入式技术》期末考试题及答案A(基于STM32)

《嵌⼊式技术》期末考试题及答案A(基于STM32)《嵌⼊式技术》期末考试题1⼀、填空题(20分)1.ARM 这个缩写包含两个意思:⼀是指___________;⼆是指______________。
2.常⽤的AT89C52单⽚机为_____位单⽚机,⽽STM32单⽚机为____位单⽚机。
3.常⽤的STM32F103~107系列单⽚机是基于_________内核,此内核采⽤的是___________结构。
4.STM32单⽚机共有8种输⼊输出模式,其中输⼊模式有____种,输出模式有_____种。
5.在编写按键检测程序时,加⼀个延时判断的⽬的是为了__________,这种⽅法叫________。
⼆、判断题(20分)1、学习嵌⼊式技术不需要硬件基础,只需要会编写软件即可。
()2、STM32F103~107系列单⽚机的最⼤系统时钟频率为72MHz。
()3、STM32F103~107系列单⽚机的⼯作电压为5.0V。
()4、STM32的软件开发环境有Keil u5、IAR等。
()5、STM32的开发模式只有基于固件库函数⽅式⼀种。
()三、名词解释(20分)1、GPIO2、TIMER3、USART4、OS四、简答题(40分)1、请举例说明,在你⾝边有哪些是单⽚机应⽤系统(⾄少举3例)?2、与常⽤的AT89C52单⽚机⽐较,STM32单⽚机有哪些⽅⾯的优点?3、STM32单⽚机常见的基本功能部件(外设)有哪些?4、编写⼀个函数,函数描述:控制LED每隔1S闪烁⼀次,控制LED的引脚为PC8,只写出具体的控制函数即可,整体程序不⽤编写。
《嵌⼊式技术》期末考试题1 参考答案⼀、填空题1、ARM 公司ARM 公司设计的CPU及其架构2、8 323、Cortex-M3 哈佛2、4 43、延时消抖软件消抖法⼆、判断题1、?2、?3、?4、?5、?三、名词解释1、输⼊/输出接⼝2、定时器3、通⽤串⾏通信接⼝4、操作系统四、简答题1、略2、(1)stm32 单⽚机的运算速度⽐AT89C52单⽚机的快;(2)stm32 单⽚机能移植操作系统,这样能处理多任务;(3)stm32 单⽚机外围接⼝功能⽐AT89C52单⽚机强⼤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如图所示,推挽放大器的输出级有两个“臂”(两组放大元件),一个
输入高电平时,输出端的电流将是下级门从本级电源经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)
STM32设置实例:
(1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);
(2)如果是无上拉电阻,IO默认是高电平;需要读取IO的值,可以使用带上拉输入_IPU和浮空输入_IN_FLOATING和开漏输出_OUT_OD;。