声明:本篇博客并不是一个详细的教程,只是对本篇涉及到的知识点进行简单整理,罗列出其中疑难、易引起误解的地方。若想对该功能进行全方位的了解,建议直接去看手册。本篇博客分为功能介绍、cubemx界面介绍、hal库函数功能说明、例程Demo四部分。 " E( Y. n7 J" t# A; w STM32_H7_GPIO' K- W U t+ A 功能介绍! a7 z+ h1 ~& B! _1 U$ R" L2 } -摘抄手册+ v V% s- U4 y& U6 N& n8 e 简介' I7 y }. e7 ]/ s, v 每个通用 I/O 端口包括 :) a k9 j; j' B! A8 | 4 个 32 位配置寄存器 (GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR) 2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR) 1 个 32 位置位/复位寄存器 (GPIOx_BSRR)。% `" \3 ]6 H9 u( J$ s 此外,所有 GPIO 都包括 : 1 个 32 位锁定寄存器 (GPIOx_LCKR) 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。 主要特性 从 输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据 将数据输入到 输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入): g4 k! O* [4 s6 e# Z; s# f 可为每个 I/O 选择不同的速度7 j1 C; K. j% U- R 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限8 ~6 S' j& u% F$ i5 Y8 G 锁定机制 (GPIOx_LCKR),可冻结 I/O 端口配置7 _" J' U8 U8 \9 k; R 快速翻转,每次翻转最快只需要两个时钟周期 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种: I/ O5 |) _8 p) O% e% a 可通过软件将通用 I/O (GPIO) 端口的各个端口 位分别配置为多种模式: GPIO框图 . N, W% i0 O* S5 C 8 j, E3 F/ V/ l* C/ o 框图说明: 只需要对上图中的黄色框进行不同的配置,就可将通用 I/O (GPIO) 端口的各个端口位分别配置为多种模式: 输入浮空 输入上拉, V% P% S% U8 w 输入下拉 模拟输入 开漏输出; J, q) H$ y% e$ F0 l! z 推挽输出 复用功能推挽- b! i" a6 [! C8 _( T8 W 复用功能开漏( b2 X. Z" G& W9 W. s 具体如何配置,在手册(RM0433)第11.3.9、11.3.10、11.3.12、11.3.13小节里有详细的描述,这里不再展开说明。& b' Q5 o( {$ e* y% W: X9 L - ~1 _4 k' h2 s 补充描述$ ?7 M, m; G) T& |' S1 }" c/ j W \ 上电复位后引脚状态:& s' Z2 C- J$ |& g# G ! l# s% |" s3 B8 C7 F; T4 g) R6 n 在复位期间及复位刚刚完成后,大多数 I/O 端口被配置为输入浮空模式。但以下调试功能相关端口例外: PA15:JTDI 处于上拉状态 PA14:JTCK/SWCLK 处于下拉状态, G6 K7 b! Q# l/ [1 b. N PA13:JTMS/SWDAT 处于上拉状态' I1 ^9 l7 J8 X. S PB4:NJTRST 处于上拉状态8 `5 e( U, I8 C; y/ w, }) F PB3:JTDO 处于浮空状态 3 p+ |- |: i P4 O: r % Q U; \# g3 x 输入数据寄存器每个 AHB 时钟周期对 I/O 引脚上的数据进行一次采样,在将IO配置为输出时,仍然可以通过输入数据寄存器读取IO电平 0 [# j b5 L+ Z& ?7 \# l i4 M I/O 引脚复用功能复用器和映射" ~6 m) p$ y* R* z5 T4 i) @" r. B " I" u6 t$ ^2 g3 u7 }/ u2 F 要在外设复用功能配置下使用 I/O,用户必须按照以下步骤操作: 在 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中,将 I/O 连接到所需的 AFx。' A% a# M& a) L+ _8 r' ~( s 通过 GPIOx_OTYPER、GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度。8 q0 k8 z O; }- i; X1 R 在 GPIOx_MODER 寄存器中将所需 I/O 配置为复用功能。* e, f: G! g. h$ U3 A7 a4 B$ x 对于 ADC 和 DAC等外设,请查阅手册后进行操作。 GPIO寄存器 I8 e6 t2 t9 u* v; ~ 请查阅手册(RM0433)第11.4节。 - Y$ a! u O1 P; _& ~ STM32CubeMX7 @# o4 F+ J/ u8 l0 B; ?, A STM32CubeMX关于GPIO的配置比较简单,截图说明如下(以输出模式为例): ; g9 h, O- }% u" ?( K " I' d+ B' u+ B( P' w HAL/LL库函数功能说明 控制GPIO相关的HAL库函数不多,只有8个,列表如下:0 S j5 y2 d! S1 h $ H5 _3 s- P7 i3 L# u9 |2 | : s4 D5 c6 D: E* { 详细功能去阅读库函数说明文档。例如:STM32H753xx_User_Manual.chm,可在官网下载。$ n4 Y* I( S) L$ E# e; c# x- d2 L! z DEMO2 G0 { M9 O' V; g% ^% z1 u; @ 所有DEMO均提供Keil和STM32CubeIDE两个版本,且同时在github和码云进行备份。: n. \+ g3 d9 F3 {# X+ M0 E |
【经验分享】STM32_H7_ADC
STM32H7R/S高性能MCU:安全性,大存储和优异图显赋能更多应用创新
Stm32H7XX GCC下分散加载实现
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
DIY-STM32H750核心板
[nucleo-H7A3ZI-Q]1-点亮一个皮皮灯
DIY-STM32H743核心板
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
1月10日有奖直播 | 基于STM32 的CODESYS智能自动化解决方案
STM32的CAN FD位定时设置注意事项