GPIO设计

合集下载

嵌入式系统设计(基于ST32F4) 课件 5 GPIO结构及应用

嵌入式系统设计(基于ST32F4) 课件    5 GPIO结构及应用

嵌入式系统设计
电子信息与计算机工程系 成都理工大学工程技术学院
5.3 GPIO典型应用步骤及常用库函数
5.3.2 GPIO常用函数
头文件:stm32f4xx_gpio.h 源文件:stm32f4xx_gpio.c
1、1个初始化函数:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
5.3 GPIO典型应用步骤及常用库函数
嵌入式系统设计
电子信息与计算机工程系 成都理工大学工程技术学院
5.3 GPIO典型应用步骤及常用库函数
5.3.1 GPIO典型应用步骤
使用库函数实现片上外设的控制,一般需要以下几步:
1、使能相应片上外设的时钟(非常重要),设计到的文件有
头文件:stm32f4xx_rcc.h 源文件:stm32f4xx_rcc.c 使用的主要函数:
每个GPIO有16个引脚,每个引脚都可以单独配置。
嵌入式系统设计
电子信息与计算机工程系 成都理工大学工程技术学院
5.1 GPIO 结构原理
1. GPIO 功能描述
根据应用需求,可通过软件将通用I/O (GPIO) 端口对应的各个引脚位分 别配置为多种模式: ● 输入浮空-上电默认模式 ● 输入上拉 ● 输入下拉 ● 模拟功能 ● 具有上拉或下拉功能的开漏输出 ● 具有上拉或下拉功能的推挽输出 ● 具有上拉或下拉功能的复用功能推挽 ● 具有上拉或下拉功能的复用功能开漏
嵌入式系统设计
电子信息与计算机工程系 成都理工大学工程技术学院
5.2 GPIO相关寄存器
嵌入式系统设计
电子信息与计算机工程系 成都理工大学工程技术学院

GPIO

GPIO

F2812 I/O配置与应用浅析GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。

嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。

而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。

对这些设备/电路的控制,使用传统的串行口或并行口都不合适。

所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。

接口至少有两个寄存器,即“通用IO控制寄存器”与“通用IO数据寄存器”。

数据寄存器的各位都直接引到芯片外部,而对这种寄存器中每一位的作用,即每一位的信号流通方向,则可以通过控制寄存器中对应位独立的加以设置。

这样,有无GPIO接口也就成为微控制器区别于微处理器的一个特征。

一、 F2812 I/O端口概述F2812提供了56个多功能引脚,这些引脚的第一功能是作为通用意义数字I/O口(GPIO),而第二功能则可以作为片内外设的输入/输出引脚。

F2812通过专门的多路选择器(MUX)进行引脚功能的选择。

如果作为通用数字I/O口,有专门的方向寄存器用于配置引脚作为输入还是输出,另外还有专门的数据寄存器、置位寄存器、清零寄存器以及触发寄存器用于对I/O口的状态进行读取或配置。

GPIO 引脚分配GPIO AGPIOA0 / PWM1 GPIOA1 / PWM2 GPIOA2 / PWM3 GPIOA3 / PWM4 GPIOA4 / PWM5 GPIOA5 / PWM6 GPIOA6 / T1PWM_T1CMP GPIOA7 / T2PWM_T2CMP GPIOA8 / CAP1_QEP1 GPIOA9 / CAP2_QEP2 GPIOA10 / CAP3_QEPI1 GPIOA11 / TDIRA GPIOA12 / TCLKINA GPIOA13 / C1TRIP GPIOA14 / C2TRIP GPIOA15 / C3TRIPGPIO BGPIOB0 / PWM7 GPIOB1 / PWM8 GPIOB2 / PWM9 GPIOB3 / PWM10 GPIOB4 / PWM11 GPIOB5 / PWM12 GPIOB6 / T3PWM_T3CMP GPIOB7 / T4PWM_T4CMP GPIOB8 / CAP4_QEP3 GPIOB9 / CAP5_QEP4 GPIOB10 / CAP6_QEPI2 GPIOB11 / TDIRBGPIOB12 / TCLKINBGPIOB13 / C4TRIPGPIOB14 / C5TRIPGPIOB15 / C6TRIPGPIO DGPIOD0 / T1CTRIP_PDPINTA GPIOD1 / T2CTRIP / EVASOC GPIOD5 / T3CTRIP_PDPINTB GPIOD6 / T4CTRIP / EVBSOC GPIO EGPIOE0 / XINT1_XBIO GPIOE1 / XINT2_ADCSOC GPIOE2 / XNMI_XINT13 GPIO FGPIOF0 / SPISIMOAGPIOF1 / SPISOMIAGPIOF2 / SPICLKAGPIOF3 / SPISTEAGPIOF4 / SCITXDAGPIOF5 / SCIRXDAGPIOF6 / CANTXAGPIOF7 / CANRXAGPIOF8 / MCLKXAGPIOF9 / MCLKRAGPIOF10 / MFSXAGPIOF11 / MFSRAGPIOF12 / MDXAGPIOF13 / MDRAGPIOF14 / XFGPIO GGPIOG4 / SCITXDBGPIOG5 / SCIRXDBNote: GPIO are pinfunctions at reset GPIO A, B, D, E include Input Qualification feature二、GPIO寄存器控制2、1 GPxMUX寄存器通用输入输出多路选择寄存器I/O是工作在通用数字IO还是外围IO信号引脚就有GPxMUX决定。

ZYNQ系列学习GPIO实验

ZYNQ系列学习GPIO实验

ZYNQ系列学习GPIO实验GPIO实验⼀、实验原理调⽤GPIO实现PS对引脚的控制⼆、实验步骤1、建⽴⼯程这部分是ivado的操作内容,这⾥不做过多说明。

2、添加ZYNQ处理器IP在左侧菜单栏中双击Create Block Design(bd为⽂件),在跳出的Diagram界⾯添加IP核processing_system7_0(点击中间的加号后输⼊zynq即可筛选出来)3、配置IP核勾选UART1⽤于调试,设置DDR⽤于下载,具体的配置⽅式根据相应的芯⽚做出设置。

4、添加两个GPIO与总线连接的IP核AXI-GPIO核添加和内核添加类似,直接调⽤IP核的库就⾏。

5、设置输⼊与输出的GPIO-AXI核类型输⼊:输出:6、⾃动连接和⾃动在Diagram框内出现Run Block Automation 和 Run Connection Automation两个选项,先后再前,依次执⾏,得到的效果图·:7、⽣成例化在资源界⾯顶层⽂件右击》generate Productor,默认⽣成即可。

再右击选择Create HDL wrapped即可得到⾃动例化的⽂件。

8、配置引脚双击open elaborated design,打开引脚管理器IO ports(2019的默认在右下⾓),根据原理图选择管脚。

注意使⽤开发板的管教电压。

9、综合映射⽣成bit⽂件这⾥本来有三个个步骤,但是可以合在⼀起执⾏。

直接点击左下⾓的generate Bitstream即可得到bit⽂件。

这⾥需要⽐较长的时间,需要耐⼼等待。

映射也是需要做的。

这⾥说明⼀下bit⽂件的作⽤。

⽣成好的bit⽂件可以在file》export中输出hardware,⽣成的hardware可以使⽤sdk或者vitis平台读取,形成⾃定义的硬件平台。

换⾔之,截⾄到这⼀步,所有的硬件设备已经调⽤完成,不能再添加硬件设计了。

下⾯的都是基于软件的设计,不能修改硬件。

gpio的推挽输出驱动电路设计

gpio的推挽输出驱动电路设计

gpio的推挽输出驱动电路设计【原创版】目录1.概述2.推挽输出驱动电路的工作原理3.推挽输出驱动电路的设计要点4.推挽输出驱动电路的实际应用5.总结正文1.概述GPIO(通用输入/输出)是微控制器中的一个重要外设,它可以通过编程配置为输入或输出模式。

在输出模式下,GPIO 可以驱动外部负载,如 LED、开关等。

为了提高 GPIO 的驱动能力,常常需要使用推挽输出驱动电路。

本文将详细介绍推挽输出驱动电路的设计方法。

2.推挽输出驱动电路的工作原理推挽输出驱动电路是一种双极型电路,它主要由两个互补的晶体管组成。

当 GPIO 输出高电平时,其中一个晶体管导通,另一个晶体管截止;当 GPIO 输出低电平时,两个晶体管的状态相反。

这样,在不同电平下,晶体管可以输出不同的电流,从而驱动外部负载。

3.推挽输出驱动电路的设计要点设计推挽输出驱动电路时,需要考虑以下几个方面:(1)选择合适的晶体管:为了提高驱动能力,需要选择电流放大系数较大的晶体管。

同时,为了保证电路的稳定性,还需要考虑晶体管的功耗、电压等参数。

(2)确定电阻值:在推挽输出驱动电路中,需要串联两个电阻来限制晶体管的电流。

电阻的值需要根据晶体管的参数和负载电流来确定。

(3)考虑电源电压对电路的影响:当电源电压较大时,晶体管的导通电流会增大,从而提高驱动能力。

但是,当电源电压较小时,晶体管的导通电流会减小,可能导致驱动能力不足。

因此,设计时需要根据实际电源电压来选择合适的晶体管和电阻。

4.推挽输出驱动电路的实际应用推挽输出驱动电路广泛应用于各种电子设备中,如 LED 驱动器、开关驱动器等。

在这些设备中,推挽输出驱动电路可以提高 GPIO 的驱动能力,从而实现对负载的稳定控制。

5.总结推挽输出驱动电路是一种有效的 GPIO 驱动电路,它可以提高 GPIO 的驱动能力,实现对负载的稳定控制。

在设计推挽输出驱动电路时,需要考虑晶体管的选择、电阻值的确定以及电源电压对电路的影响等因素。

推荐-第4章 stm32单片机通用输入输出GPIO 精品

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

第5章 GPIO及其编程9

第5章 GPIO及其编程9
每个引脚的功能必须在启动主程序之前进行定义。如 果一个引脚没有使用复用功能,那么它可以配置为 I/O口。
注意:端口A除了作为功能口外,只能够作为输出口 使用。
大部分端口都是复用的,需要使用端口控制寄存器来决 定每个引脚使用哪个功能。
①端口控制寄存器(GPACON-GPHCON) : 定义引 脚的功能。 如果GPF0~GPF7和GPG0~GPG7用于 掉电模式的唤醒信号,它们必须被配置成中断模式。
rGPBDAT= rGPBDAT &(~ (1<<7)); //GPB7输出低电平,LED3亮
DelaySecond(x);
rGPBDAT= rGPBDAT | (1<<7); // GPB7输出高电平,LED3灭
rGPBDAT= rGPBDAT &(~ (1<<8)); //GPB8输出低电平,LED4亮
R1 R2 R3 R4
K1 K2 K3 K4
VDD33V
LED1
R5
LED2
R6
LED3
R7
LED4
R8
图8-2 按键与LED显示电路连接图
GPB5 GPB6 GPB7 GPB8
10
2. 通用I/O端口的程序设计
通用I/O端口的设计流程如下: ①确定使用的I/O端口是输入或输出功能。 ②根据1)配置相应端口的控制寄存器GPnCON,并 根据需要设置端口的上拉电阻寄存器GPnUP。 ③设置输出端口的初始值;根据程序的功能要求编写 程序。 程序设计如下:
②端口数据寄存器(GPADAT-GPHDAT): 用于IO 功能。如果端口被配置成输出端口,可以向GPnDAT 中的相关位写入数据;如果端口被配置成输入端口, 可以从GPnDAT中的相关位读入数据。

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

介绍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的八种工作模式,揭秘特点及广泛应用场景【导言】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)。

1
0 1 0 00
不使用
不使用 不使用 0 1
输出模式位
MODE[1:0]
意义
Hz 最大输出速度为2MHz 最大输出速度为50MHz
端口配置低寄存器(GPIOx_CRL) (x=A..E)
• 偏移地址:0x00 • 复位值:0x4444 4444
位 31:30 27:26
漏输出:输出端相当于三极管的集电极. 要得到
高电平状态需要上拉电阻才行. 适合于做电流型
的驱动,其吸收电流的能力相对强(一般20mA以
内).
• 三、在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)
• 实例
位29:28 25:24 21:20 17:16 13:12 9:8 5:4 1:0
MODEy[1:0]:端口x的模式位(y = 0…7) (Port x mode bits) 软件通过这些位配置相应的I/O端口。 00:输入模式(复位后的状态) 01:输出模式,最大速度10MHz 10:输出模式,最大速度2MHz 11:输出模式,最大速度50MHz
• 2. GPIO口设为输入时,输出驱动电路与端口是断开,
所以输出速度配置无意义。
• 3. 在复位期间和刚复位后,复用功能未开启,I/O
端口被配置成浮空输入模式。 • 所有端口都有外部中断能力。为了使用外部中断线, 端口必须配置成输入模式。
• 4.推挽输出与开漏输出的区别
• 推挽输出:可以输出高,低电平,连接数字器件;开
• 位31:17保留。 • 位16 • LCKK:锁键 (Lock key)该位可随时读出,它只可通过锁 键写入序列修改。0:端口配置锁键位激活1:端口配置锁 键位被激活,下次系统复位前GPIOx_LCKR寄存器被锁住。 • 锁键的写入序列:写1 -> 写0 -> 写1 -> 读0 -> 读1 • 最后一个读可省略,但可以用来确认锁键已被激活。 • 注:在操作锁键的写入序列时,不能改变LCK[15:0]的值。 操作锁键写入序列中的任何错误将不能激活锁键。
• 通过选择速度来选择不同的输出驱动模块,达到
最佳的噪声控制和降低功耗的目的。
• 高频的驱动电路,噪声也高,当不需要高的输出
频率时,请选用低频驱动电路,这样非常有利于
提高系统的EMI性能。
• 当然如果要输出较高频率的信号,但却选用了较
低频率的驱动模块,很可能会得到失真的输出信
号。
• 关键是GPIO的引脚速度跟应用匹配 • 对于串口,假如最大波特率只需115.2k,那么用
端口输入数据寄存器(GPIOx_IDR)
• 地址偏移:0x08 • 复位值:0x0000 XXXX
• 位31:16保留,始终读为0。 • 位15:0 IDRy[15:0]:端口输入数据(y = 0„15) (Port input data)这些位为只读并只能以字(16 位)的形式读出。读出的值为对应I/O口的状态。
• 位31:16保留。 • 位15:0 • BRy: 清除端口x的位y (y = 0„15) (Port x Reset bit y)这些位只能写入并只能以字(16位) 的形式操作。0:对对应的ODRy位不产生影响1: 清除对应的ODRy位为0
端口配置锁定寄存器(GPIOx_LCKR)
当执行正确的写序列设置了位16(LCKK)时,该寄存 器用来锁定端口位的配置。 位[15:0]用于锁定GPIO端口的配置。在规定的写入 操作期间,不能改变LCKP[15:0]。当对相应的端 口位执行了 LOCK序列后,在下次系统复位之前将 不能再更改端口位的配置。 • 每个锁定位锁定控制寄存器(CRL, CRH)中相应的4 个位。 • 地址偏移:0x18 • 复位值:0x0000 0000
位29:28 25:24 21:20 17:16 13:12 9:8 5:4 1:0
• MODEy[1:0]:端口x的模式位(y = 8„15) 软件通 过这些位配置相应的I/O端口。 • 00:输入模式(复位后的状态) • 01:输出模式,最大速度10MHz • 10:输出模式,最大速度2MHz • 11:输出模式,最大速度50MHz
• 3. 开漏输出(OutputOD) • 开漏输出和推挽输出相比结构基本相同,但只有 下拉晶体管T1而没有上拉晶体管。同样,T1实际 上也是多组可编程选择的晶体管。
• 开漏输出结构没有内部上拉,因此在实际应用时
通常都要外接合适的上拉电阻(通常采用4.7~
10kΩ )。开漏输出能够方便地实现“线与”逻辑
端口位设置/清除寄存器(GPIOx_BSRR)
• 地址偏移:0x10 • 复位值:0x0000 0000
位31:16 • BRy: 清除端口x的位y (y = 0„15) (Port x Reset bit y)这些位只能写入并只能以字(16位) 的形式操作。0:对对应的ODRy位不产生影响1: 清除对应的ODRy位为0注:如果同时设置了BSy和 BRy的对应位,BSy位起作用。
位15:0 • LCKy: 端口x的锁位y (y = 0„15) 这些位可读可 写但只能在LCKK位为0时写入。 • 0:不锁定端口的配置 • 1:锁定端口的配置
• (1) VDD_FT 对5伏容忍I/O脚是特殊的,它与VDD不同
• 一、GPIO的各种模式 • GPIO管脚可以被配置为多种工作模式,其中有3 种比较常用:高阻输入、推挽输出、开漏输出 1. 高阻输入(Input) • 输入模式的结构比较简单,就是一个带有施密特 触发输入的三态缓冲器(U1),并具有很高的输 入等效阻抗。
23:22
19:18 15:14 11:10 7:6 3:2
CNFy[1:0]:端口x配置位(y = 8…15) (Port x config-uration bits) 软件通过这些位配置相应的I/O端口。在输入模式 (MODE[1:0]=00): 00:模拟输入模式 01:浮空输入模式(复位后的状态) 10:上拉/下拉输入模式 11:保留 在输出模式(MODE[1:0]>00): 00:通用推挽输出模式 01:通用开漏输出模式 10:复用功能推挽输出模式 11:复用功能开漏输出模式
GPIO高阻输入模式结构示意图
• 施密特触发输入的作用是能将缓慢变化的或者是 畸变的输入脉冲信号整形成比较理想的矩形脉冲 信号。 • 执行GPIO管脚读操作时,在读脉冲(Read Pulse) 的作用下会把管脚(Pin)的当前电平状态读到内 部总线上(Internal Bus)。在不执行读操作时, 外部管脚与内部总线之间是隔离的。
GPIO 设计
配置模式 通用 输出 复用 功能 输出 输入 推挽(Push-Pull) 开漏(Open-Drain) 推挽(Push-Pull)
CNF1
CNF0
MODE1
MODE0
PxODR寄 存器 0或1 0或1 不使用
0 1
0 1 0
开漏(Open-Drain)
模拟输入 浮空输入 下拉输入 上拉输入 1 0
功能,即多个开漏的管脚可以直接并在一起 。
• 开漏输出的另一种用途是能够方便地实现不同逻
辑电平之间的转换(如3.3V到5V之间),只需外
接一个上拉电阻,而不需要额外的转换电路。典
型的应用例子就是基于开漏电气连接的I2C总线。
• 4. 钳位二极管 • 其作用是防止从外部管 脚Pin输入的电压过高 或者过低。
端口配置高寄存器(GPIOx_CRH)
• 偏移地址:0x04 • 复位值:0x4444 4444
位 31:30 27:26
23:22
19:18 15:14 11:10 7:6 3:2
• CNFy[1:0]:端口x配置位(y = 8„15) 软件通过 这些位配置相应的I/O端口。 在输入模式(MODE[1:0]=00): • 00:模拟输入模式 • 01:浮空输入模式(复位后的状态) • 10:上拉/下拉输入模式 • 11:保留 在输出模式(MODE[1:0]>00): • 00:通用推挽输出模式 • 01:通用开漏输出模式 • 10:复用功能推挽输出模式 • 11:复用功能开漏输出模式
• 位15:0 • BSy: 设置端口x的位y (y = 0„15) (Port x Set bit y)这些位只能写入并只能以字(16位)的形式 操作。0:对对应的ODRy位不产生影响1:设置对 应的ODRy位为1
端口位清除寄存器(GPIOx_BRR)
• 地址偏移:0x14 • 复位值:0x0000 0000
• (1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够 正确输出0和1;读值时先 • GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读 IO的值;使用GPIO_ReadInputData Bit(GPIOB, GPIO_Pin_0); • (2)如果是无上拉电阻,IO默认是高电平;需要读取IO的 值,可以使用 • (3)带上拉输入_IPU和浮空输入_IN_FLOATING和 开漏 输出_OUT_OD;
相关文档
最新文档