文章目录
- 一、GPIO八种模式
- 1. 输入
- 2. 输出
- 3. 如何选择GPIO的模式
- 二、库函数GPIO配置
- 1. 配置代码
- 2.参数设置
一、GPIO八种模式
GPIO的输入输出是对于STM32单片机来说的。以下仅为个人粗略笔记,内部电路分析可参考博客https://blog.csdn.net/k666499436/article/details/123845466
1. 输入
- 上拉输入
- 下拉输入
- 浮空输入
- 模拟输入
2. 输出
- 复用推挽输出
- 普通推挽输出
- 复用开漏输出
- 普通开漏输出
3. 如何选择GPIO的模式
- 先判断对于单片机来说是输入还是输出
- 若为输入:①看引脚是否为ADC输入,如果是则为模拟输入;
②看引脚悬空时,电压不确定,可为高电平、低电平;
③需要高电平-内部有上拉电阻-悬空时为高电平;
④需要低电平-内部有下拉电阻-悬空时为低电平; - 若为输出:①有外设-为复用模式;无外设-为普通模式;
②只能输出低电平-开漏模式;可输出高电平、低电平-推挽模式。
二、库函数GPIO配置
1. 配置代码
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//打开GPIOE口的时钟
GPIO_InitTypeDef GPIO_InitStruct={0};//清零结构体
//GPIO参数配置
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOE,&GPIO_InitStruct);//初始化
GPIO_SetBits(GPIOE,GPIO_Pin_2);//置引脚
2.参数设置
查找固件库使用手册
- GPIO初始化
注意:
当某管脚设置为上拉或者下拉输入模式,使用寄存器 Px_BSRR 和 PxBRR
GPIO_Mode 允许同时设置 GPIO 方向(输入/输出)和对应的输入/输出设置,:位[7:4]对应 GPIO 方向,
位[4:0]对应配置。GPIO 方向有如下索引
- GPIO 输入模式 = 0x00
- GPIO 输出模式 = 0x01
Table 186. 给出了所有 GPIO_Mode 的索引和编码
例子:
例:
/* Configure all the GPIOA in Input Floating mode */
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);