stm32F4/L4 GPIO学习汇总

本文只为自己助记,个人理解偏颇,自行参考

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初始化流程

  1. __HAL_RCC_GPIOX_CLK_ENABLE(其中X=A~K) //使能时钟
  2. HAL_GPIO_Init();
  3. 操作 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);//读取端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值