声明:本篇博客并不是一个详细的教程,只是对本篇涉及到的知识点进行简单整理,罗列出其中疑难、易引起误解的地方。若想对该功能进行全方位的了解,建议直接去看手册。本篇博客分为功能介绍、cubemx界面介绍、hal库函数功能说明、例程Demo四部分。 4 T/ w( y- k) y4 S& T4 L1 v STM32_H7_GPIO( @; x7 o8 ]% K8 I a4 r9 e, J' V 功能介绍 -摘抄手册$ X; Z' F2 G* m5 F' Q9 x. G" h 简介 每个通用 I/O 端口包括 :1 h# R7 t' b0 a$ I7 D 4 个 32 位配置寄存器 (GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)$ T3 d0 U" D) P: l 2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR) 1 个 32 位置位/复位寄存器 (GPIOx_BSRR)。 此外,所有 GPIO 都包括 : 1 个 32 位锁定寄存器 (GPIOx_LCKR)% W9 R1 K( x. b 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。 主要特性 从 输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据" }& ?" u2 C, s& U6 N& d 将数据输入到 输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入)" D" \4 i. Y( N; W! R' b 可为每个 I/O 选择不同的速度 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限 锁定机制 (GPIOx_LCKR),可冻结 I/O 端口配置 快速翻转,每次翻转最快只需要两个时钟周期2 k ^2 X: _) i e% K 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种 可通过软件将通用 I/O (GPIO) 端口的各个端口 位分别配置为多种模式:% u4 }7 ^2 A0 H [ GPIO框图8 Z5 Y0 `5 X8 l # o4 l, X" t( u" P! J1 P8 F 0 T) H2 l; x$ k# n' I' k+ C 框图说明:% h, f; d; q1 j 只需要对上图中的黄色框进行不同的配置,就可将通用 I/O (GPIO) 端口的各个端口位分别配置为多种模式: 输入浮空 输入上拉7 O8 }4 w7 w6 H) f0 } 输入下拉 模拟输入/ A7 m" E% W2 J$ x 开漏输出0 A& `" Q1 P o2 i1 }) A 推挽输出 v8 ?& X% O0 Y8 m) H 复用功能推挽 复用功能开漏 具体如何配置,在手册(RM0433)第11.3.9、11.3.10、11.3.12、11.3.13小节里有详细的描述,这里不再展开说明。( a) D$ Z9 _& }9 T& y $ c1 T4 q2 ~) D' Z 补充描述 上电复位后引脚状态:4 T9 o6 A- T9 Z* G& Z6 Q" k g* w6 `+ `; ^3 S- P: `0 k+ L 在复位期间及复位刚刚完成后,大多数 I/O 端口被配置为输入浮空模式。但以下调试功能相关端口例外:0 G$ ?& F' w1 a" i; S1 U$ l * C8 n" V$ s0 B7 } PA15:JTDI 处于上拉状态 PA14:JTCK/SWCLK 处于下拉状态 PA13:JTMS/SWDAT 处于上拉状态 PB4:NJTRST 处于上拉状态7 x+ d4 ]! l. \: v5 X' _! `4 b PB3:JTDO 处于浮空状态 ^) R0 B, m- m 输入数据寄存器每个 AHB 时钟周期对 I/O 引脚上的数据进行一次采样,在将IO配置为输出时,仍然可以通过输入数据寄存器读取IO电平# y, i& p: `9 L4 U$ @, n ) w# B5 e; x' J0 m9 c I/O 引脚复用功能复用器和映射! @0 e: N- ?3 O% H9 X' a : o' x8 X" `4 l- i+ S& o# y. Q 要在外设复用功能配置下使用 I/O,用户必须按照以下步骤操作:* G; z- Y( X5 n% C ; E* J3 R, e, k; p: [ 在 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中,将 I/O 连接到所需的 AFx。/ o6 p- x8 V9 x5 w8 \: l5 T 通过 GPIOx_OTYPER、GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度。' B7 `% K7 h& Z6 W( ] 在 GPIOx_MODER 寄存器中将所需 I/O 配置为复用功能。 对于 ADC 和 DAC等外设,请查阅手册后进行操作。 , B2 I N; `3 ^$ E) w GPIO寄存器 请查阅手册(RM0433)第11.4节。 8 O9 ~+ r5 i* N2 ~% _" M STM32CubeMX STM32CubeMX关于GPIO的配置比较简单,截图说明如下(以输出模式为例):: M( E# k4 P' |" g3 k# V1 x : F' N# r8 {, m# {" O * ^8 a% ~1 Y& U; b# j 8 W" H7 J% { W2 Y" k: z5 y: o* l. i HAL/LL库函数功能说明 控制GPIO相关的HAL库函数不多,只有8个,列表如下: 详细功能去阅读库函数说明文档。例如:STM32H753xx_User_Manual.chm,可在官网下载。 DEMO 所有DEMO均提供Keil和STM32CubeIDE两个版本,且同时在github和码云进行备份。3 q9 v2 f3 D0 C2 [7 P: J$ f ; |4 d. M6 s6 {8 `4 b4 n " ?% J% L: ?* h U |
【经验分享】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位定时设置注意事项