STM32F4 的GPIO基本应用

学习了开发板STM32F1和F4之后发现 他们的GPIO功能是不同的
STM32F4

IO基本应用

一、IO的主要特性:
受控 I/O 多达 16 个
输出状态:推挽或开漏 + 上拉/下拉
● 从输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据
● 可为每个 I/O 选择不同的速度
● 输入状态:浮空、上拉/下拉、模拟
● 将数据输入到输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入)
● 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限
● 锁定机制 (GPIOx_LCKR),可冻结 I/O 配置
● 模拟功能
复用功能输入/输出选择寄存器(一个 I/O 最多可具有 16 个复用功能)
● 快速翻转,每次翻转最快只需要两个时钟周期
● 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种

二、工作方式:
● 输入浮空
● 输入上拉
● 输入下拉
● 模拟功能
● 具有上拉或下拉功能的开漏输出
● 具有上拉或下拉功能的推挽输出
● 具有上拉或下拉功能的复用功能推挽
● 具有上拉或下拉功能的复用功能开漏

1、输入模式:

    在输入浮空模式下,电路既不上拉也不下拉,通过施密特触发器送到输入数据寄存器在送入到CPU。输入上拉和下拉模式分别是在电路中经过上拉和下拉后通过施密特触发器送入的CPU,模拟模式下,施密特触发器关闭后信号直接通过模拟通道至片上外设。

2、输出模式:

    开漏输出模式下,CPU发送输入直接或间接的控制输出数据寄存器,通过输出控制电路,当信号为1时,N—MOS管是关闭的,所以IO电平就是受上下拉电路的控制,当信号为0时,N—MOS管导通输出就是下拉低电平;推挽输出模式下,信号为1时,P-MOS管导通,N-MOS管截止,输出就是上拉高电平,当信号为0时,P-MOS管截止,N-MOS管导通,输出就是下拉低电平;对于开漏复用和推挽复用模式与开漏和推挽的不同之处就是在于信号的开源不同,开漏复用和推挽复用的信号来源是片上的外设模块。

三、相关寄存器

每个通用 I/O 端口包括 4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)、2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)、1 个 32 位置位/复位寄存器 (GPIOx_BSRR)、1 个 32 位锁定寄存器 (GPIOx_LCKR) 和 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。
1.工作模式配置
GPIOx_MODER 寄存器用于 选择 I/O 方向(输入、输出、AF、模拟)
GPIOx_OTYPER寄存器用来选择输出方式为推挽或者是开漏输出
GPIOx_OSPEEDR寄存器用来选择传输速率
GPIOx_PUPDR:配置上拉/下拉(不同于F1,F4中输出模式也可以配置上下拉)
2.I/O口复用功能输入/输出
有两个寄存器可用来从每个 I/O 可用的 16 个复用功能输入/输出中进行选择。借助这些寄存 器,可根据应用程序的要求将某个复用功能连接到其它某个引脚。这意味着可使用 GPIOx_AFRL 和 GPIOx_AFRH 复用功能寄存器在每个 GPIO 上复用多个可 用的外设功能。这样一来,应用程序可为每个 I/O 选择任何一个可用功能。由于 AF 选择信 号由复用功能输入和复用功能输出共用,所以只需为每个 I/O 的复用功能输入/输出选择一个通道即可。
3.外部中断线/唤醒线
所有端口都具有外部中断功能。要使用外部中断线,必须将端口配置为输入模式
4.输入配置
输出缓冲器被关闭
● 施密特触发器输入被打开
● 根据 GPIOx_PUPDR 寄存器中的值决定是否打开上拉和下拉电阻
● 输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样
● 对输入数据寄存器的读访问可获取 I/O 状态
5.输出配置
● 输出缓冲器被打开
施密特触发器输入被打开
● 根据 GPIOx_PUPDR 寄存器中的值决定是否打开弱上拉电阻和下拉电阻
● 输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样
● 对输入数据寄存器的读访问可获取 I/O 状态
● 对输出数据寄存器的读访问可获取最后的写入值

6.IO复用
复用功能配置(可以发现复用没有输入的配置)
对 I/O 端口进行编程作为复用功能时:
可将输出缓冲器配置为开漏或推挽
● 输出缓冲器由来自外设的信号驱动(发送器使能和数据)
施密特触发器输入被打开
● 根据 GPIOx_PUPDR 寄存器中的值决定是否打开弱上拉电阻和下拉电阻
● 输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样
● 对输入数据寄存器的读访问可获取 I/O 状态

一、复用背景:

由于考虑到IO口的有限,为了节省IO资源,同时为了更好的协调IO之间的工作,所以有必要在适当的时候给IO口赋予不同的功能,一个IO口在不同的时候可以承担不同的工作,这就是IO的复用功能。

二、复用原理:

每一个IO口都会接有一个选择器,这个选择器经过相应寄存器(GPIOx_AFRH和GPIOx_AFRL)的配置之后就可以做不同的功能的应用,这个寄存器就是GPIOx_AFRH和GPIOx_AFRL。

三、寄存器配置:

每一组IO口都有一个AFRL和一个AFRH寄存器,他们都是32位的寄存器,其中每4位配置一个IO口的功能,则对应的GPIOx_AFRL就用来配置第0-7个IO口,GPIOx_AFRH就用来配置第8-15个IO口。每4位配置一个IO口,则4位数据的相关取值就会有对应的相应功能。如此一来就做好了相关配置。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值