第5章通用输入/输出接口GPIO
第5章 通用输入/输出 接口GPIO
本章讲述了通用输入/输出接口GPIO,包括通用输入/输出接口概述、GPIO的功能、GPIO常用库函数、GPIO使用流程、GPIO输出应用实例和GPIO输入应用实例
本章讲述了通用输入/输出接口GPIO,包括通用输入/ 输出接口概述、GPIO的功能、GPIO常用库函数、GPIO 使 用流程、GPIO输出应用实例和GPIO输入应用实例
5.1通用输入/输出接口概述几乎在所有的嵌入式系统应用中,都涉及开关量的输入和输出功能,例如状态指示、报警输出、继电器闭合和断开、按钮状态读入、开关量报警信息的输入等。这些开关量的输入和控制输出都可以通过通用输入/输出接口实现STM32F103VET6有80根多功能双向能承受5V电压的快速/O口线。每16根口线分为一组,分别为PA、PB、PC、PD、PE。每个GPIO端口有两个32位配置寄存器(GPIOxCRL,GPIOxCRH),两个32位数据寄存器(GPIOxIDR和GPIOxODR),一个32位置位/复位寄存器(GPIOxBSRR),一个16位复位寄存器(GPIOxBRR)和一个32位锁定寄存器(GPIOxLCKR)
几乎在所有的嵌入式系统应用中,都涉及开关量的输入 和输出功能,例如状态指示、报警输出、继电器闭合和断开 、按钮状态读入、开关量报警信息的输入等。这些开关量的 输入和控制输出都可以通过通用输入/输出接口实现。 STM32F103VET6有80根多功能双向能承受5V电压的快 速I/O口线。每16根口线分为一组,分别为PA、PB、PC、 PD、PE。每个GPIO端口有两个32位配置寄存器( GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器( GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器 (GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR) 和一个32位锁定寄存器(GPIOx_LCKR)。 5.1 通用输入/输出接口概述
GPIO端口的每个位都可以由软件分别配置成以下模式1)输入浮空:浮空(floating)就是逻辑器件的输入引脚既不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。2)输入上拉:上拉就是把电压拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平。电阻同时起限流作用。弱强只是上拉电阻的阻值不同,没有什么严格区分。3)输入下拉:就是把电压拉低,拉到GND。与上拉原理相似。4)模拟输入:模拟输入是指传统方式的模拟量输入。数字输入是输入数字信号,即0和1的二进制数字信号
GPIO端口的每个位都可以由软件分别配置成以下模式。 1)输入浮空:浮空(floating)就是逻辑器件的输入引 脚既不接高电平,也不接低电平。由于逻辑器件的内部结构 ,当它输入引脚悬空时,相当于该引脚接了高电平。一般实 际运用时,引脚不建议悬空,易受干扰。 2)输入上拉:上拉就是把电压拉高,比如拉到Vcc。上 拉就是将不确定的信号通过一个电阻嵌位在高电平。电阻同 时起限流作用。弱强只是上拉电阻的阻值不同,没有什么严 格区分。 3)输入下拉:就是把电压拉低,拉到GND。与上拉原 理相似。 4)模拟输入:模拟输入是指传统方式的模拟量输入。数 字输入是输入数字信号,即0和1的二进制数字信号
5)开漏输出:输出端相当于三极管的集电极。要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。6)推挽式输出:可以输出高低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。7)推挽式复用功能。8)开漏复用功能。复用功能可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用1/O口使用)。每个1/O可以自由编程,而1/O口寄存器必须按32位字访问(不允许半字或字节访问)。GPIOxBSRR和GPIOxBRR寄存器允许对任何GPIO寄存器的读/更改的独立访问,这样,在读和更改访问之间产生中断(IRQ)时不会发生危险。一个I/O口的基本结构如图5-1所示0
5)开漏输出:输出端相当于三极管的集电极。要得到高 电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸 收电流的能力相对强(一般20mA以内)。 6)推挽式输出:可以输出高低电平,连接数字器件;推 挽结构一般是指两个三极管分别受两个互补信号的控制,总 是在一个三极管导通的时候另一个截止。 7)推挽式复用功能。 8)开漏复用功能。 复用功能可以理解为GPIO口被用作第二功能时的配置情 况(即并非作为通用I/O口使用)。每个I/O可以自由编程,而 I/O口寄存器必须按32位字访问(不允许半字或字节访问)。 GPIOx_BSRR和GPIOxBRR寄存器允许对任何GPIO寄存器 的读/更改的独立访问,这样,在读和更改访问之间产生中断 (IRQ)时不会发生危险。一个I/O口的基本结构如图5-1所示