STM32之GPIO
STM32之GPIO
GPIO简介
GPIO是通用输入输出端口(General Purpose Input Output)的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32芯片的GPIO被分成很多组,每组有16个引脚,所有的GPIO引脚都有基本的输入输出功能。
共有8种输入输出模式
引脚电平:0V~3V,部分引脚可容忍5V(引脚定义中带FT的)
- 输出模式下控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等。
- 输入模式下,可读取高低电平,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
GPIO框图剖析
输入输出模式
输入模式
- 浮空输入:读取引脚电平,引脚悬空,则电平不确定(使用时接连续信号)
- 上拉输入:读取引脚电平,内接上拉电阻,悬空默认高电平
- 下拉输入:读取引脚电平,内接下拉电阻,悬空默认低电平
- 模拟输入:GPIO无效,引脚直接接入内部ADC
输出模式
- 开漏输出:可输出引脚电平,高电平为高阻态,低电平接VSS
- 推挽输出:可输出引脚电平,高电平为VDD,低电平接VSS
- 复用开漏输出:由片上外设控制,高电平为高阻态,低电平接VSS
- 复用推挽输出:由片上外设控制,高电平为VDD,低电平接VSS
使用模拟输入时会关闭其他数字输入,其他7个模式中全部输入功能都是有效的
输出速度:限制输出引脚的最大反转速度
输出模式下,有2MHz、10MHz、50MHz。
输出代码
1 | GPIO_InitTypeDef GPIO_InitStructure; //定义初始化结构体 |
定义初始化结构体,只需要一次,配置模式、速度的语句相同时,可以只出现一次
完整使用
gpio.c
1 |
|
gpio.h
1 |
|
函数中改变输出
GPIO_ResetBits(GPIOC,GPIO_Pin_13); //设置低电平
GPIO_SetBits(GPIOC,GPIO_Pin_13); //设置高电平
调用函数:GPIO1(void)
输入代码
1 | GPIO_InitTypeDef GPIO_InitStructure; //定义初始化结构体 |
一般按键使用下接按键的方式,即上面两种接法,需配置为上拉输入模式
读取状态
1 | GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12) //读取PC12输入状态 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Eureka!
评论