蓝桥杯STM32G431学习之外设GPIO(三)

目录

三、GPIO的工作模式以及寄存器配置 

1. GPIO工作模式

1.1 输入模式

(一) 浮空输入模式

(二) 输入上拉模式

(三) 输入下拉模式

(四) 高组态模拟输入模式

1.2 输出模式

(五) 开漏通用输出模式

(六) 推挽通用输出模式 

(七) 开漏复用功能输出模式

(八) 推挽复用功能输出模式

2. 工作模式下的寄存器配置

2.1 输入模式

(一) 浮空输入配置

(二) 输入上拉配置

(三) 输入下拉配置 

(四) 高组态模拟输入配置

2.2 输出模式 

(五) 开漏通用输出配置

(六) 推挽通用输出配置

(七) 开漏复用功能输出配置

(八) 推挽复用功能输出配置

3. 其他寄存器配置


//先了解下各英文缩写的意思:
R:Register 寄存器         
I:Input    输入           
O:Output   输出           
D:Data     数据

P:Pull 拉
U:Up   上
D:Down 下

B:Bit   位             
S:Set   置位           
R:Reset 复位            

C:Configuration 配置
L:Lock          锁

L:Low  低
H:High 高

MODE:模式
TYPE:类型
SPEED:速度

AF:Alternate function 复用功能

三、GPIO的工作模式以及寄存器配置 

每个GPIO都包括了11个寄存器来配置具体功能。每个引脚功能都是完全可以独立配置的,互不影响。

打开《STM32G4系列微控制器参考手册.pdf》,9.4节详细说明了GPIO的11个寄存器。

GPIOx_MODER    端口模式寄存器
GPIOx_OTYPER   端口输出类型寄存器
GPIOx_OSPEEDR  端口输出速度寄存器
GPIOx_PUPDR	   端口上拉/下拉寄存器
GPIOx_IDR	   端口输入数据寄存器
GPIOx_ODR	   端口输出数据寄存器
GPIOx_BSRR	   端口置位/复位寄存器
GPIOx_LCKR	   端口配置锁定寄存器
GPIOx_AFRL	   复用功能低位寄存器
GPIOx_AFRH	   复用功能高位寄存器
GPIOx_BRR	   端口位复位寄存器

GPIO有8种工作模式,如表1所示:

模式配置模式寄存器
MODER位[1:0]
输出类型寄存器
OTYPER位
输出速度寄存器
OSPEEDR位[1:0]
上拉/下拉寄存器
PUPDR位[1:0]

输入浮空(默认)00不使用不使用00
输入上拉0001
输入下拉0010
模拟输入1100

开漏通用输出01100 低速2MHz
01 中速25MHz
10 高速50MHz
11 超高速100MHz
00 无上下拉
01 上拉
10 下拉
11 保留
推挽通用输出010
开漏复用功能输出101
推挽复用功能输出100

表1 GPIO的8种工作模式

1. GPIO工作模式

1.1 输入模式

(一) 浮空输入模式

浮空:既不接电源,也不接地。

浮空输入模式下不使用上拉/下拉电阻。当外接设备有上拉或下拉电阻时,可以配置成浮空输入模式。

(二) 输入上拉模式

 输入上拉模式使用到了上拉电阻。

(三) 输入下拉模式

  输入下拉模式使用到了下拉电阻。

(四) 高组态模拟输入模式

同样不使用上拉/下拉电阻。

1.2 输出模式

在输出模式下TTL施密特触发器为开启状态,所以输出模式下仍存在输入

  • 通用:作普通IO使用,输出0、1。 
  • 复用: 

(五) 开漏通用输出模式

场效应管:

开漏_百度百科开漏电路概念中提到的“漏”就是指MOS FET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOS FET的漏极为输出的电路。https://baike.baidu.com/item/%E5%BC%80%E6%BC%8F/10679231?fr=aladdin

“漏” 就是指MOS管的漏极Drain。开漏:开启漏极,就是指以MOS管的 漏极 为输出。    

开漏不使用 P-MOS ,故输出不为 “0” 或 “1”,而是 “0” 或 “浮空”。  

  • 写0传输到MOS管处,N-MOS 导通,输出为0;
  • 写1传输到MOS管处,P-MOS 和 N-MOS 都不导通,输出浮空。

开漏通用输出为不确定状态,不具有驱动能力。

(六) 推挽通用输出模式 

推挽使用 P-MOS 和 N-MOS ,输出为 “0” 或 “1(系统电压3.3V)”。  

推挽通用输出能够输出高电平(系统电压3.3V),具有一定的驱动能力, 可接简单外设(例如LED)。

(七) 开漏复用功能输出模式

(八) 推挽复用功能输出模式

2. 工作模式下的寄存器配置

2.1 输入模式

(一) 浮空输入配置

模式寄存器MODER位[1:0]=00 //00: Input mode输入模式
输出类型寄存器OTYPER位不使用
输出速度寄存器OSPEEDR位[1:0]不使用
上拉/下拉寄存器PUPDR位[1:0]=00 //00: No pull-up, pull-down无上拉,下拉

(二) 输入上拉配置

模式寄存器MODER位[1:0]=00 //00: Input mode输入模式
输出类型寄存器OTYPER位不使用
输出速度寄存器OSPEEDR位[1:0]不使用
上拉/下拉寄存器PUPDR位[1:0]=01 //01: Pull-up上拉

(三) 输入下拉配置 

模式寄存器MODER位[1:0]=00 //00: Input mode输入模式
输出类型寄存器OTYPER位不使用
输出速度寄存器OSPEEDR位[1:0]不使用
上拉/下拉寄存器PUPDR位[1:0]=10 //10: Pull-down下拉

(四) 高组态模拟输入配置

模式寄存器MODER位[1:0]=11 //11: Analog mode (reset state)模拟模式
输出类型寄存器OTYPER位不使用
输出速度寄存器OSPEEDR位[1:0]不使用
上拉/下拉寄存器PUPDR位[1:0]=00 //00: No pull-up, pull-down无上拉,下拉

2.2 输出模式 

(五) 开漏通用输出配置

模式寄存器MODER位[1:0]=01 //01: General purpose output mode通用输出模式
输出类型寄存器OTYPER位=1 //1: Output open-drain输出开漏
输出速度寄存器OSPEEDR位[1:0]=00~11 //00~11都可,四种速度依实际情况而定
上拉/下拉寄存器PUPDR位[1:0]=00~11 //00~11都可,一般情况下输出不加上/下拉电阻,即为00

(六) 推挽通用输出配置

模式寄存器MODER位[1:0]=01 //01: General purpose output mode通用输出模式
输出类型寄存器OTYPER位=0 //0: Output push-pull (reset state)输出推挽
输出速度寄存器OSPEEDR位[1:0]=00~11 //00~11都可,四种速度依实际情况而定
上拉/下拉寄存器PUPDR位[1:0]=00~11 //00~11都可,一般情况下输出不加上/下拉电阻,即为00

(七) 开漏复用功能输出配置

模式寄存器MODER位[1:0]=10 //10: Alternate function mode复用功能模式
输出类型寄存器OTYPER位=1 //1: Output open-drain输出开漏
输出速度寄存器OSPEEDR位[1:0]=00~11 //00~11都可,四种速度依实际情况而定
上拉/下拉寄存器PUPDR位[1:0]=00~11 //00~11都可,一般情况下输出不加上/下拉电阻,即为00

(八) 推挽复用功能输出配置

模式寄存器MODER位[1:0]=10 //10: Alternate function mode复用功能模式
输出类型寄存器OTYPER位=0 //0: Output push-pull (reset state)输出推挽
输出速度寄存器OSPEEDR位[1:0]=00~11 //00~11都可,四种速度依实际情况而定
上拉/下拉寄存器PUPDR位[1:0]=00~11 //00~11都可,一般情况下输出不加上/下拉电阻,即为00

3. 其他寄存器配置

上面说到了模式寄存器、输出类型寄存器、输出速度寄存器、上拉/下拉寄存器。另外还有7个寄存器,接下来逐个分析。

GPIOx_IDR	   端口输入数据寄存器

输入1则 ID[15:0] 就是1,输入0则 ID[15:0] 就是0。

GPIOx_ODR	   端口输出数据寄存器

GPIOx_ODR 中的内容来自 GPIOx_BSRR 。(映射)

输出1则 OD[15:0] 就是1,输出0则 OD[15:0] 就是0。

GPIOx_BSRR	   端口置位/复位寄存器

Bit 31:16  复位 BR[15:0]

  • 0:对相应的ODx位不执行任何操作
  • 1:复位相应的ODx位(0)

Bit 15: 0   置位 BS[15:0]

  • 0:对相应的ODx位不执行任何操作
  • 1:置位相应的ODx位(1)

注意:如果同时设置了BSx和BRx,则BSx具有优先级。

GPIOx_BSRR将内容映射到GPIOx_ODR中。

GPIOx_LCKR	     端口配置锁定寄存器

Bit 31:17,必须保持在重置值。
第16位LCKK:锁定钥匙。此位可随时读取。只能使用锁止键写入顺序对其进行修改。

  • 0:端口配置锁定密钥未激活
  • 1:端口配置锁定键激活。GPIOx_LCKR寄存器被锁定,直到下一个MCU复位或外围设备复位。

锁定键写入顺序:

  • WR LCKR[16]=“1”+LCKR[15:0]
  • WR LCKR[16]=“0”+LCKR[15:0]
  • WR LCKR[16]=“1”+LCKR[15:0]
  • RD LCKR
  • RD LCKR[16]=“1”(此读取操作是可选的,但它确认锁处于活动状态)

注意:

  • 在锁定键写入序列期间,LCK[15:0] 的值不得改变。
  • 锁定序列中的任何错误都会中止锁定。
  • 在端口任何位上的第一个锁序列之后,LCKK位上的任何读取访问返回 “1” ,直到下一次MCU重置或外围设备重置。

Bit 15:0 LCK[15:0]:端口x锁I/O引脚y(y=15到0)这些位是读/写的,但仅当LCKK位为 “0” 时才能写入。

  • 0:端口配置未锁定
  • 1:端口配置已锁定
GPIOx_AFRL	   复用功能低位寄存器
GPIOx_AFRH	   复用功能高位寄存器

以上两个寄存器可以回看关于GPIO知识的第一篇。 

蓝桥杯STM32G431学习之外设GPIO(一)_波桑~的博客-CSDN博客一、STM32外设GPIOGPIO:General Purpose Input Output 通用用途输入输出核心功能:输入、输出和高级外设的复用功能。https://blog.csdn.net/weixin_46409367/article/details/120591759

GPIOx_BRR	   端口位复位寄存器

  • 0:对相应的ODx位不执行任何操作
  • 1:重置相应的ODx位

以上就是对GPIO工作模式的介绍以及相应工作模式下各个寄存器的配置。

STM32F103的GPIO也可通过查看参考手册来了解,学习方法都是相同的。

GPIO介绍完了,下一章就要开始用GPIO来操作外设了,比如控制LED。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STM32G431RB是一款32位ARM Cortex-M4微控制器,它支持多种中断类型。 在STM32G431RB中,中断被分为两类:外部中断和内部中断。外部中断由外部设备触发,例如GPIO口的边沿触发。内部中断则是由内部的事件或异常触发,例如定时器溢出事件或DMA传输完成。 要使用中断功能,首先需要配置中断向量表和NVIC(Nested Vectored Interrupt Controller)。 1. 配置中断向量表: 中断向量表是存放中断处理程序入口地址的表格。在STM32G431RB中,可以通过修改链接脚本文件或使用HAL库提供的函数来配置中断向量表。 2. 配置NVIC: NVIC用于管理中断优先级和使能中断。可以使用CMSIS提供的API函数来配置NVIC。 3. 配置外部中断: 对于外部中断,首先要配置对应GPIO口的输入模式和触发方式。然后通过EXTI(External Interrupt)模块来使能外部中断,并设置触发条件。 4. 编写中断处理程序: 中断处理程序是中断发生时执行的代码块。在编写中断处理程序时,需要注意以下几点: - 使用__attribute__((interrupt))或者对应的函数前缀来声明中断处理程序。 - 在中断处理程序中尽量避免使用延时函数或阻塞操作,而是应尽量简洁并尽快完成中断处理。 - 在中断处理程序中清除中断标志位,以便使能下一次中断发生。 这是一个简要的关于在STM32G431RB上使用中断的介绍。具体的配置和编程细节可以查阅相关的参考资料或官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不爱学习的刘.Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值