
声明:本篇博客并不是一个详细的教程,只是对本篇涉及到的知识点进行简单整理,罗列出其中疑难、易引起误解的地方。若想对该功能进行全方位的了解,建议直接去看手册。本篇博客分为功能介绍、cubemx界面介绍、hal库函数功能说明、例程Demo四部分。 - G1 X* j0 I, t+ u6 ~+ f STM32_H7_GPIO9 t1 n6 K* ^0 N) R( i* M" d 功能介绍0 ]' C: X! }+ D6 u: a- w& } -摘抄手册 简介" ]5 O2 N7 C4 a/ R) S; C. v# _ 每个通用 I/O 端口包括 : 5 j" J# _ `+ r$ ] 4 个 32 位配置寄存器 (GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)9 T( Q4 p5 a: b/ X; j; |$ h! m8 b 2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR) 1 个 32 位置位/复位寄存器 (GPIOx_BSRR)。 n) @# V5 _ x- b 此外,所有 GPIO 都包括 :6 k, A/ Q" ]1 w5 H $ }3 a- [- `/ E% C$ ^1 t 1 个 32 位锁定寄存器 (GPIOx_LCKR)* o2 u0 r7 D" i" Z 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。 主要特性8 E; R# X, ^ c: m7 N# b7 Y 从 输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据 将数据输入到 输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入) 可为每个 I/O 选择不同的速度 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限4 L4 L6 X) }# d/ ?) |- i 锁定机制 (GPIOx_LCKR),可冻结 I/O 端口配置 快速翻转,每次翻转最快只需要两个时钟周期6 j( @/ U' W5 U 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种5 P& ]! P( ~( Q2 r: W+ N( X* J 可通过软件将通用 I/O (GPIO) 端口的各个端口 位分别配置为多种模式: J: D: r$ e9 Z F+ S2 V5 A 4 R2 [9 H# f! t! S1 K& |9 O GPIO框图 }/ A% a8 Z( O9 C/ g) m ![]() 框图说明: 只需要对上图中的黄色框进行不同的配置,就可将通用 I/O (GPIO) 端口的各个端口位分别配置为多种模式:/ w* f _! [( ~6 p 输入浮空 输入上拉 输入下拉 模拟输入: n" J! Z3 l: ]7 y+ V) v 开漏输出1 B$ N1 r( U* g. I* U8 V$ R. `1 n/ V' ] 推挽输出: }% S9 P( l: g2 ]3 V: S5 I, l7 G, m 复用功能推挽 j: w2 ^, u( E- | 复用功能开漏 具体如何配置,在手册(RM0433)第11.3.9、11.3.10、11.3.12、11.3.13小节里有详细的描述,这里不再展开说明。 补充描述 上电复位后引脚状态: 在复位期间及复位刚刚完成后,大多数 I/O 端口被配置为输入浮空模式。但以下调试功能相关端口例外: % Z8 D* F4 v( r! P: O PA15:JTDI 处于上拉状态 p. I1 h$ c# C$ x J" A) d. o1 B PA14:JTCK/SWCLK 处于下拉状态6 w4 c g+ A$ U; j) x; n1 e4 a! i PA13:JTMS/SWDAT 处于上拉状态4 K- e& |! `3 F7 A% [" c J" z PB4:NJTRST 处于上拉状态 PB3:JTDO 处于浮空状态4 F$ m6 o1 e+ r+ m 输入数据寄存器每个 AHB 时钟周期对 I/O 引脚上的数据进行一次采样,在将IO配置为输出时,仍然可以通过输入数据寄存器读取IO电平 I/O 引脚复用功能复用器和映射 要在外设复用功能配置下使用 I/O,用户必须按照以下步骤操作:+ h$ }3 [, w4 g. E: i2 O1 e3 v 在 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中,将 I/O 连接到所需的 AFx。 通过 GPIOx_OTYPER、GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度。* Q( c5 `* D: Q1 {/ a: ] 在 GPIOx_MODER 寄存器中将所需 I/O 配置为复用功能。1 L! P5 h/ L- {* j1 Z1 X& m 对于 ADC 和 DAC等外设,请查阅手册后进行操作。/ k; M8 F- ~, q: S0 Q3 S% i # u- U; S+ f E- ? GPIO寄存器 请查阅手册(RM0433)第11.4节。/ w+ E: J- c: j6 Y5 F/ x ; N, s3 e! p, }' a, j STM32CubeMX STM32CubeMX关于GPIO的配置比较简单,截图说明如下(以输出模式为例):6 X6 q+ ~4 n4 G8 g( o1 X6 N - p8 a) v3 |) K- x* c0 D, S! c ![]() " R2 y( ^9 G) V5 C8 L+ c" r/ @ 0 l* c0 R; E. U: ~/ F! p HAL/LL库函数功能说明 控制GPIO相关的HAL库函数不多,只有8个,列表如下:$ Q" d6 `: g- R" [/ p$ o! Q ![]() 详细功能去阅读库函数说明文档。例如:STM32H753xx_User_Manual.chm,可在官网下载。; w! [# Q, m# C7 g G7 P# B8 ^ DEMO 所有DEMO均提供Keil和STM32CubeIDE两个版本,且同时在github和码云进行备份。 / b& { S( V! A ![]() 7 W7 V. L- F: V8 q/ { |
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA
有奖预约 | STM32H7R7基于RT-Thread RTOS的智能终端GUI解决方案
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
STM32H745I-DISCO串口打印
【STM32H745I-DISCO】TouchGFX探索——3、触屏滑屏操作与中文显示
TouchGFX软件下载及使用
【STM32H745I-DISCO】TouchGFX探索——2、照葫芦画瓢
STM32H745I-DISCO硬件信号为空,M4、M7对于硬件信号的优先性判断