STM32F4操作GPIO寄存器

GPIO的工作模式

1、4种输入模式

(1)GPIO_Mode_IN_FLOATING 浮空输入
(2)GPIO_Mode_IPU 上拉输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_AIN 模拟输入

2、4种输出模式

(5)GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉)
(6)GPIO_Mode_AF_OD 复用开漏输出(带上拉或者下拉)
(7)GPIO_Mode_Out_PP 推挽输出(带上拉或者下拉)
(8)GPIO_Mode_AF_PP 复用推挽输出(带上拉或者下拉)

3、4种最大输出速度

(1)2MHZ (低速)
(2)25MHZ (中速)
(3)50MHZ (快速)
(4)100MHZ (高速)

寄存器

GPIO 端口模式寄存器

在这里插入图片描述

GPIO 端口输出类型寄存器

在这里插入图片描述
在这里插入图片描述

在cubeMX生成的代码中修改引脚的模式,只修改输入输出模式即可。

配置通用输入模式

GPIOA->MODER &=0XFFFFFFF3;//清零寄存器中PA1的值,即配置PA1为输入模式
//也可以这也写:
//	GPIOA->MODER &=~(0X3<<2*1);//配置PA1输入模式

配置推挽输出模式

GPIOA->MODER &=0XFFFFFFF3 ;//先清零寄存器中PA1的值
GPIOA->MODER |=0X1<<2 ;//配置PA1通用输出模式
GPIOA->OTYPER &=0XFFFD;//配置PA1推挽输出模式
//也可以这也写:
//	GPIOA->MODER &=~(0X3<<2*1);//先清零寄存器中PA1的值
//	GPIOA->MODER |=(0X1<<2*1) ;//配置PA1通用输出模式
//	GPIOA->OTYPER &=~(0x1<<1);//配置PA1推挽输出模式

配置GPIO输出速度

GPIOA->OSPEEDR &=0XFFFFFFF3;//先清零寄存器中PA1的值
GPIOA->OSPEEDR |=0X1<<2 ;//配置PA1速度25MHz	

最后封装一下即可

	#define MPU_SDA_IN()  	GPIOA->MODER &=0XFFFFFFF3;//输入模式
	void MPU_SDA_OUT(void) { 
							GPIOA->MODER &=0XFFFFFFF3 ;//先清零寄存器中PA1的值
							GPIOA->MODER |=0X1<<2 ;//配置PA1通用输出模式
							GPIOA->OTYPER &=0XFFFD;//配置PA1推挽输出模式
							GPIOA->OSPEEDR &=0XFFFFFFF3;//先清零寄存器中PA1的值
							GPIOA->OSPEEDR |=0X1<<2 ;//配置PA1速度25MHz	
						  }

另外操作寄存器常用的C语言语法:

//从第0位开始 共0-31位
GPIOA->MODER &=~(0X1<<2);//将第2位清零
GPIOA->MODER &=0XFFFFFFF3;//将第2、3位清零
GPIOA->MODER &=~(0X3<<2);//将第2、3位清零
GPIOA->MODER &=~(0X3<<2*4);//将第四组的位清零,即第8、9位清零

GPIOA->MODER |=0X1<<2;//将第2位置1
GPIOA->MODER |=0XC;//将第2、3位置1
GPIOA->MODER |=0X3<<2;//将第2、3位置1
GPIOA->MODER |=0X3<<2*4;//将第四组的位置1,即第8、9位置1

16进制的转换可以借助WIN10自带计算机(程序员模式):
在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值