STM32常用外设--GPIO(通用输入/输出)

一、什么是GPIO?

        GPIO全称General Purpose Input Output(通用输入/输出),可以配置8种输入/输出模式,在输入模式下,可以读取对应引脚端口的高低电平或电压,主要用于读取按键输入、读取传感器数据等;在输出模式下,可以控制对应引脚端口的高低电平或电压,主要用于点亮LED、驱动蜂鸣器等。

二、八种输入/输出模式

1、模拟输入(GPIO_Mode_AIN )

        此时上拉电阻和下拉电阻关闭,信号不需要通过施密特触发器(施密特触发器主要用于数字输入信号的去抖),P-MOS和N-MOS不导通。

        此时I/O引脚直接通过模拟输入进入片上外设,主要用于模拟信号的输入/输出,如连接模拟数字转换器(ADC)或数字模拟转换器(DAC)等。 

2、浮空输入(GPIO_Mode_IN_FLOATING) 

        此时上拉电阻和下拉电阻关闭,信号直接通过施密特触发器,P-MOS和N-MOS不导通。

        此时I/O引脚信号不受到来自上拉电阻和下拉电阻的作用,直接通过施密特触发器去抖然后读出,在空闲时,IO引脚的电平不确定,容易受到外部设备的影响。

3、下拉输入(GPIO_Mode_IPD) 

        此时上拉电阻关闭,下拉电阻打开,信号受到下拉电阻作用,直接通过施密特触发器,P-MOS和N-MOS不导通。

        此时I/O引脚信号受到来自下拉电阻的作用,在空闲时,I/O引脚呈现低电平状态。

4、上拉输入(GPIO_Mode_IPU)

        此时上拉电阻打开,下拉电阻闭合,施密特触发器打开,P-MOS和N-MOS不导通。

        在空闲时,IO口呈现高电平状态。

5、开漏输出(GPIO_Mode_Out_OD ) 

        此时信号通过输出数据寄存器写入,通过N-MOS输出至I/O引脚。

        此时P-MOS始终不导通,所以I/O引脚不能输出高电平,必须有外部或内部上拉电阻才能实现输出高电平。

 6、推挽输出(GPIO_Mode_Out_PP )

        此时P-MOS和N-MOS均可导通,I/O引脚即可输出高电平也可以输出低电平,具有比较强的驱动能能力。

 7、复用开漏输出(GPIO_Mode_AF_OD)

        信号通过复用功能输出自片上外设,与开漏输出相仿,P-MOS闭合,N-MOS导通,不能直接输出高电平,必须有外部(或内部)上拉电阻才能实现输出高电平。此外,该模式下的输出通常由其他外设控制。

8、 复用推挽输出(GPIO_Mode_AF_PP)

        信号通过复用功能输出自片上外设,与推挽输出相仿,N-MOS和P-MOS导通,能够直接输出高低电平,具有比较强的驱动能力,适用于与其他外设协同工作的场景。 

 三、常用库函数

        记录一下我自己常用的GPIO库函数。

1、GPIO_DeInit

        该函数参数只有一个GPIOx,作用是重置GPIOx的值。

2、GPIO_Init

        第一个参数是GPIOx,第二个参数是GPIO结构体(通过GPIO_InitTypeDef建立)的指针,用于初始化GPIO端口。

3、 GPIO_ReadInputDataBit

        第一个参数是GPIOx,第二个参数是引脚(0-15),检测指定引脚输入的电平并返回一个uint8_t的值。

4、GPIO_ReadInputData 

        只有一个参数GPIOx,检测指定IO端口的输入电平并返回一个uint_16_t的值。

5、GPIO_ReadOutputDataBit

        第一个参数是GPIOx,第二个参数是引脚(0-15),检测指定引脚输出的电平并返回一个uint8_t的值。 

 

6、GPIO_ReadOutputData

        第一个参数是GPIOx,第二个参数是引脚(0-15),检测指定引脚输出的电平并返回一个uint8_t的值。 

7、GPIO_SetBits

        指定引脚置低电平 。

         

 8、GPIO_ReSetBits

        指定引脚置高电平。

9、 GPIO_WriteBit

        第一个参数是GPIOx,第二个参数是指定引脚,第三个参数是要写入的电平状态。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值