stm32f4端口寄存器配置

一,io口资源

STM32F407有7组IO,分别为GPIOA~GPIOG,每组IO有16个IO口,则有112个IO口。其中IO口的基本结构如下:

二,gpio工作方式

1,四种输入模式

输入浮空

输入上拉

输入下拉

模拟输入

2,四种输出模式

开漏输出

开漏复用

推挽输出

推挽复用

3,引脚功能


1)作为普通 GPIO 输入:根据需要配置该引脚为浮空输入、 带弱上拉输入或带弱下拉输入,同时不要使能
该引脚对应的所有复用功能模块。
2)作为普通 GPIO 输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复
用功能模块。
3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
4)作为内置外设的输入:根据需要配置该引脚为浮空输入、 带弱上拉输入或带弱下拉输入,同时使能该引
脚对应的某个复用功能模块。
5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所
有复用功能模块。
 

三,GPIO寄存器

stm32f4是通过十个寄存器设置一组(16个)io口的

1,端口模式寄存器(GPIOx_MODER)

该寄存器32位都可用,每个io口占用2位,可以被设置为4种模式

00:输入模式;   01:输出模式;  10:复用功能模式;  11:模拟模式;


2,端口输出类型寄存器(GPIOx_OTYPER)

该寄存器16位可用,每个io口占用1位,可以被设置为2种模式(0,1)

0:推挽输出;  1:开漏输出;


3,端口输出速度寄存器(GPIOx_OSPEEDR)

该寄存器32位都可用,每个io口占用2位,可以被设置为4种模式

00:2MHZ;   01:25MHZ;  10:50MHZ;  11:30 pF 时为 100 MHz(15 pF 时为 80 MHz 输出(最大速度));

4,端口上拉下拉寄存器(GPIOx_PUPDR)

该寄存器32位都可用,每个io口占用2位,可以被设置为4种模式

00:无上下拉;   01:上拉;  10:下拉;  11:保留;

5,端口输入数据寄存器(GPIOx_IDR)(只读,不可被设置)

该寄存器16位可用,每个io口占用1位,
这些位为只读形式,只能在字模式下访问。它们包含相应 I/O 端口的输入值。


6,端口输出数据寄存器(GPIOx_ODR)

该寄存器16位可用,每个io口占用1位

端口输出数据 这些位可通过软件读取和写入

注意区分与GPIOx_BSRR寄存器的区别(https://blog.csdn.net/alanzjl/article/details/43857963);


7,端口置位/复位寄存器(GPIOx_BSRR)

该寄存器32位都可用:0-15为该组16个io口的置位控制(0:不执行任何操作;1:置位)

                                    16-31为该组16个io口的复位控制(0:不执行任何操作;1:复位)


8,端口配置锁存寄存器(GPIOx_LCKR)

位 15:0 LCKy: 端口 x 锁定位 y (Port x lock bit y) (y= 0..15)
这些位都是读/写位,但只能在 LCKK 位等于“0”时执行写操作。
0:端口配置未锁定
1:端口配置已锁定

位 16 LCKK[16]: 锁定键 (Lock key)
可随时读取此位。可使用锁定键写序列对其进行修改。
0:端口配置锁定键未激活。
1:端口配置锁定键已激活。直到 MCU 复位时,才锁定 GPIOx_LCKR 寄存器。


9,复位功能寄存器(GPIOx_AFRL & GPIOx_AFRH)

该寄存器32位都可用,每个io口占用4位,可以被设置为16种复用模式中的一种

  GPIOx_AFRL 用于0-7位的端口配置

  GPIOx_AFRH 用于8-15位的端口配置

 

四,设置步骤

1.     使能相关时钟

2.     设置相应的IO口为输入或输出

3.     设置输入\输出的类型

4.     设置输出的速度(如果设置为输入,此步跳过)

5.     如果输出速度>=50M,开启补偿单元

6.     设置上拉下拉寄存器

7.     通过复位置位寄存器和输入输出数据寄存器进行操作

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值