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”,就代表着。

合集下载

STM32F103单片机GPIO使用步骤

STM32F103单片机GPIO使用步骤

STM32F103单片机GPIO使用步骤“快速上手STM32F103单片机,在完成单片机keil编程环境的配置后,第一个要学会的就是GPIO使用,GPIO的常用功能是输入输出,本文将介绍GPIO的C编程步骤。

”01—输出功能配置使用GPIO的步骤为以下所述:(1)开启使用引脚的时钟,因此STM32单片机为了实现其低功耗,只有在具体某个GPIO口使能时钟后,此处时钟选择需要与下文(2)中GPIO引脚相对应方能使用,具体对应关系查看手册,如图1所示,PC[15:0]表示PC15~PC0,同理PA[15:0]、PB[15:0]、PD[15:0]和PE[15:0]。

GPIOC对应PC[15:0],GPIOC又对应APB2总线。

本文PC13使能时钟为APB2;(2)配置GPIO结构体参数,分别配置输出模式为推挽输出模式,选择GPIO引脚为PC13,输出频率为最高50MHz。

(3)设置输出引脚的具体数值,0或者1,也即高低电平。

图102—keil程序Keil软件中,在User组下添加main.c文件,在该文件下添加如下代码:#include "stm32f10x.h" // 包含头文件,stm32f10x.h的定义文件int main(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能GPIOC的时钟GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO结构体GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; //选择GPIO端口,P13GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //选择GPIO端口速度GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //选择GPIO端口输出模式,推挽GPIO_Init(GPIOC,&GPIO_InitStruct); //初始化选择GPIOC端口GPIO_ResetBits(GPIOC,GPIO_Pin_13); //P13复位,为0while(1) //无限循环,保证单片机运行状态{}}编译文件,无错误后,可下载程序到单片机中执行。

STM32-GPIO及EXTI初始化详解

STM32-GPIO及EXTI初始化详解

STM32-GPIO及EXTI初始化详解void EXTI_Configuration(void); //定义IO中断初始化函数EXTI_Configuration();//IO中断初始化函数调用简单应用://中断设置void EXTI_Configuration(void){EXTI_InitTypeDef EXTI_InitStructure; //EXTI初始化结构定义EXTI_ClearITPendingBit(EXTI_LINE_KEY_BUTTON);//清除中断标志GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource3);//管脚选择GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource4);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource6);EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//事件选择EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发模式EXTI_InitStructure.EXTI_Line = EXTI_Line3 | EXTI_Line4; //线路选择EXTI_InitStructure.EXTI_LineCmd = ENABLE;//启动中断EXTI_Init(&EXTI_InitStructure);//初始化}//RCC初始化函数中开启I/O时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);//GPIO初始化函数中定义输入I/O管脚。

STM32中GPIO的8种工作模式总结

STM32中GPIO的8种工作模式总结

STM32 中GPIO 的8 种工作模式总结
一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。

高低电平由IC 的电源决定。

形象点解释:推挽,就是有推有拉,任何时候IO 口的电平都是确定的,不需要外接上拉或者下拉电阻。

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路
中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。

输出既可以向负载灌电流,也可以从负载抽取电流。

推拉式输出级既提高电路的负载能力,又提高开关速度。

二、开漏输出:
开漏,就等于输出口接了个NPN 三极管,并且只接了E,B,而C 极是开
路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出
1 的时候,就可以是5V 电压,也可以是3.3V 电压了,但是不接电阻上拉的
时候,这个输出高就不能实现了。

输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。

适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA 以内)。

开漏形
式的电路有以下几个特点:。

STM32 GPIO 配置之ODR, BSRR, BRR 详解

STM32 GPIO 配置之ODR, BSRR, BRR 详解

STM32 GPIO 配置之ODR, BSRR, BRR 详解用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态.ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。

管脚对于位写1 gpio 管脚为高电平,写0 为低电平BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制管脚为低电平。

对寄存器高16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。

写0 ,无动作BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器管脚对于位写1 相应管脚会为低电平。

写0 无动作。

刚开始或许你跟我一样有以下疑惑:1.既然ODR 能控制管脚高低电平为什么还需要BSRR和SRR寄存器?2.既然BSRR能实现BRR的全部功能,为什么还需要SRR寄存器?对于问题1 ------ 意法半导体给的答案是---“This way, there is no risk that an IRQ occurs between the read and the modify access.”什么意思呢?就就是你用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。

也就不需要关闭中断。

用ODR操作GPIO的伪代码如下:disable_irq()save_gpio_pin_sate = read_gpio_pin_state();save_gpio_pin_sate = xxxx;chang_gpio_pin_state(save_gpio_pin_sate);enable_irq();关闭中断明显会延迟或丢失一事件的捕获,所以控制GPIO的状态最好还是用SBRR和BRR对于问题2 ------- 个人经验判断意法半导体仅仅是为了程序员操作方便估计做么做的。

因为BSRR的低16bsts 恰好是set操作,而高16bit是reset 操作而BRR 低16bits 是reset 操作。

STM32单片机的八种IO口模式解析

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开漏输出
开漏输出:输出端相当于三极管的集电极。

要得到高电平状态需要上拉电阻才行。

适合于做电流型的驱动,。

STM32中GPIO的8种工作模式

STM32中GPIO的8种工作模式

一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。

高低电平由IC的电源决定。

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。

输出既可以向负载灌电流,也可以从负载抽取电流。

推拉式输出级既提高电路的负载能力,又提高开关速度。

二、开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。

适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。

开漏形式的电路有以下几个特点:1、利用外部电路的驱动能力,减少IC内部的驱动。

当IC内部MOSFET导通时,驱动电流是从外部的VCC流经上拉电阻、MOSFET到GND。

IC内部仅需很小的栅极驱动电流。

2、一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。

比如加上上拉电阻就可以提供TTL/CMOS电平输出等。

(上拉电阻的阻值决定了逻辑电平转换的速度。

阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。

)3、开漏输出提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。

因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。

所以如果对延时有要求,则建议用下降沿输出。

4、可以将多个开漏输出连接到一条线上。

通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系,即“线与”。

可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。

推荐-第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)

GPIO的8种模式详解

8种模式详解
和stm32的GPIO相关的寄存器有 (1)两个32位的配置寄存器(GPIOX_CRL,GPIOX_CRH) 每一个IO占用4位,16个IO占用64位就是两个32为寄存器。 其中CNF[1:0]是用来配置模式的,其定义如下 MODE[1:0]是用来配置输入输出模式及输出模式下的端口速率的 (2)端口输入数据寄存器(GPIOX_IDR) 其中高16位是保留的,低十六位对应着16个IO口的数据位。 (3)端口输出数据寄存器(GPIOX_ODR) 其中高16位是保留的,低十六位对应着16个IO口的数据位。 (4)端口位设置/清除寄存器(GPIOX_BSRR) 其中的每一位的定义如下: (5)端口位清除寄存器(GPIOX_BRR) 前面的16位是保留的,后面的十六位的定义如下: (6)端口配置锁定寄存器(GPIOX_LCKR)

介绍gpio的八种工作模式特点及应用场景

标题:深度探讨GPIO的八种工作模式特点及应用场景在嵌入式系统中,GPIO(General Purpose Input/Output)是非常重要的接口,它可以在数字电路中扮演着非常重要的作用。

GPIO的工作模式多种多样,每种模式都有其特点和应用场景。

在本文中,我将深度探讨GPIO的八种工作模式特点以及在实际应用中的各种场景。

1. 输入模式- 简介:输入模式是最基础的GPIO工作模式,用于将外部信号输入到嵌入式系统中。

- 特点:具有高电平或低电平的状态,并能够接收外部传感器、开关等设备的信号。

- 应用场景:用于接收按钮、传感器等外部设备的输入信号,如温度传感器、光敏电阻等。

2. 输出模式- 简介:输出模式是将嵌入式系统中的数字信号输出到外部设备中。

- 特点:可以输出高电平或低电平的数字信号,控制外部设备的状态。

- 应用场景:用于控制LED灯、蜂鸣器、继电器等外部设备,实现各种实际应用。

3. 推挽输出- 简介:推挽输出是一种特殊的输出模式,可以输出较大的电流。

- 特点:输出信号可以直接驱动负载,不需要外部电路,具有较高的可靠性。

- 应用场景:用于驱动电机、舵机等高电流负载的驱动,如智能小车、机械臂等项目。

4. 开漏输出- 简介:开漏输出是一种适合于多路设备共享总线的输出模式。

- 特点:可用于实现多设备共享总线,并且可以实现硬件控制的通信协议。

- 应用场景:用于I2C、SPI等多设备共享总线的通信协议,以及控制LED显示器、LCD屏幕等设备。

5. 三态输出- 简介:三态输出是一种可以对外输出、内部拉高或拉低的输出模式。

- 特点:可以使输出引脚处于高阻态,避免对总线的冲突。

- 应用场景:多设备共享总线的通信协议中,避免总线冲突,保证通信的准确性。

6. 模拟输入- 简介:模拟输入模式是用于接收模拟信号的输入模式。

- 特点:可以接收模拟信号,并将其转换成数字信号,进行后续的处理。

- 应用场景:用于接收模拟传感器信号,如声音传感器、光线传感器等,进行模拟信号处理。

介绍gpio的八种工作模式,特点及应用场景

介绍gpio的八种工作模式,特点及应用场景【标题】深入介绍GPIO的八种工作模式,揭秘特点及广泛应用场景【导言】GPIO(General Purpose Input/Output)是通用输入输出引脚的简称,它是现代电子设备中非常重要的一个接口,广泛应用于各个领域,如嵌入式系统、电子工程、物联网等。

GPIO的工作模式决定了其功能特性和应用场景的选择。

本文将全面深入地介绍GPIO的八种工作模式,探讨其特点并揭示其广泛应用场景,以帮助读者更好地理解和应用GPIO接口。

【正文】1. 输入模式输入模式是GPIO最基本的工作模式之一,用于读取外部信号的逻辑电平状态。

在输入模式下,GPIO引脚接收外界电平变化,并将其转换成对应的逻辑值,供处理器或者其他IC进行处理。

常见的应用场景包括按键输入、传感器数据采集等。

2. 输出模式输出模式是GPIO的另一个基础工作模式,用于控制外部设备的电平状态。

在输出模式下,GPIO引脚会根据处理器的指令输出相应的电平信号,驱动外部设备进行工作。

控制LED灯、驱动电机等。

3. 开漏输出模式开漏输出模式是GPIO的一种特殊输出模式,它允许多个输出引脚连接到一个电平上拉电阻上,实现共享一个信号线的目的。

开漏输出模式常用于总线通信(I2C、SPI)等场景,同时也可以用于实现外部电平转换。

4. 串行模式(UART)串行模式是GPIO的一种高级工作模式,常用于数据通信。

UART (Universal Asynchronous Receiver/Transmitter)是一种常见的串行通信协议,它通过GPIO的输入和输出引脚实现数据的发送和接收。

串行模式在无线通信、蓝牙、WiFi模块等场景中得到了广泛应用。

5. PWM模式PWM(Pulse Width Modulation)模式是GPIO的一种特殊输出模式,用于控制脉冲宽度的调节。

通过在不同时间段内改变高电平和低电平的占空比,可以控制输出引脚产生不同的平均电压或者电流,从而实现对电机速度、LED亮度等的精确控制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档