本文只为自己助记,个人理解偏颇,自行参考
GPIO8种模式及翻译 //以下可能和最新版英文略有出入
(1)GPIO_Mode_AIN 模拟输入 ADC
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入 事件高电平
(4)GPIO_Mode_IPU 上拉输入 事件低电平
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出 常用,强控
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出
-
GPIO_MODE_OUTPUT_PP 推挽输出
-
GPIO_MODE_INPUT 输入模式
-
GPIO_PULLUP 上拉
-
GPIO_PULLDOWN 下拉
-
GPIO_NOPULL 无上拉下拉 浮空
-
GPIO_SPEED_FREQ_HIGH 高速
寄存器
MODER 模式控制寄存器 简单讲,目前理解的就是模式mode
OTYPER 输出类型 输出时有效 o out i in type
OSPEEDR 输出速度 out speed 2M-25M-50M-80~100M(目前个人用不到最高速,用到再查)
UPDR 上拉/下拉 00无 01上拉 10下拉
ODR 输出电平
IDR
AFRH
AFRL
配置
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); //配置函数,前面GPIOX,后面具体配置参数结构体
结构体如下:
typedef struct
{
uint32_t Pin; //指定 IO 口
uint32_t Mode;//模式设置
uint32_t Pull;//上下拉设置
uint32_t Speed; //速度设置
uint32_t Alternate;//复用映射配置
}GPIO_InitTypeDef;
一般GPIO初始化流程
__HAL_RCC_GPIOX_CLK_ENABLE(其中X=A~K) //使能时钟
HAL_GPIO_Init();
- 操作 IO 输入输出
以下初始化HAL_GPIO_Init()
GPIO_InitTypeDef GPIO_Initure; //定义结构体名
GPIO_Initure.Pin=GPIO_PIN_0; //端口号
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //初始化端口
常用GPIO命令
HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//端口翻转
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); //输出高
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET); //输出低
HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_5);//读取端口