STMCU小助手
发布时间:2021-12-18 17:42
|
声明:本篇博客并不是一个详细的教程,只是对本篇涉及到的知识点进行简单整理,罗列出其中疑难、易引起误解的地方。若想对该功能进行全方位的了解,建议直接去看手册。本篇博客分为功能介绍、cubemx界面介绍、hal库函数功能说明、例程Demo四部分。 ! f- z/ q2 v6 l7 _; v1 n1 Q) L3 N STM32_H7_GPIO1 D T0 Q/ x. K 5 a0 ?, s$ g8 ~0 @8 e5 ?3 X 功能介绍 -摘抄手册8 o* } c' {% `8 F: z; z; } 简介% J, C7 R6 {3 l+ [0 W 每个通用 I/O 端口包括 :* _5 ?: K1 L+ {* g( @$ t Q 4 个 32 位配置寄存器 (GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)4 y; `! q* S$ s: Z; A 2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)2 R* R! l- g+ Y Y 1 个 32 位置位/复位寄存器 (GPIOx_BSRR)。; [0 _" n1 C1 ]9 H; z" l+ ^ 此外,所有 GPIO 都包括 : + g Y* N' v5 O) k 1 个 32 位锁定寄存器 (GPIOx_LCKR)7 S- N' V/ D" P: \+ p2 P) @" g m 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。9 F5 [( { T0 H* K1 p& T 主要特性 从 输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据 将数据输入到 输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入) 可为每个 I/O 选择不同的速度( i2 f+ }: _" O! s 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限1 l# E N2 H' N7 n1 F { 锁定机制 (GPIOx_LCKR),可冻结 I/O 端口配置 快速翻转,每次翻转最快只需要两个时钟周期 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种 可通过软件将通用 I/O (GPIO) 端口的各个端口 位分别配置为多种模式: 4 k9 l6 a# @7 A O7 I$ E- t GPIO框图 , s* T1 g# K1 k
框图说明:/ g( P$ t" S9 X. J$ R# U. u$ H 只需要对上图中的黄色框进行不同的配置,就可将通用 I/O (GPIO) 端口的各个端口位分别配置为多种模式: 输入浮空 输入上拉 输入下拉2 ?# T7 w5 Y% W/ \8 N3 m 模拟输入 开漏输出 推挽输出 复用功能推挽4 P- ]( |% ^ a 复用功能开漏 具体如何配置,在手册(RM0433)第11.3.9、11.3.10、11.3.12、11.3.13小节里有详细的描述,这里不再展开说明。 补充描述 上电复位后引脚状态: 在复位期间及复位刚刚完成后,大多数 I/O 端口被配置为输入浮空模式。但以下调试功能相关端口例外:0 h; O: r O/ z# u " _' i1 v: G: N7 A4 e PA15:JTDI 处于上拉状态 PA14:JTCK/SWCLK 处于下拉状态 PA13:JTMS/SWDAT 处于上拉状态1 ]+ D) h, w% x( I9 u) a" N PB4:NJTRST 处于上拉状态 PB3:JTDO 处于浮空状态 输入数据寄存器每个 AHB 时钟周期对 I/O 引脚上的数据进行一次采样,在将IO配置为输出时,仍然可以通过输入数据寄存器读取IO电平. n4 F2 e+ N& f3 Q* c% O 7 d7 B R' Y! |" ?. X# x5 | I/O 引脚复用功能复用器和映射/ s! m- _0 {) s! v w: y / o( E$ @* r' Z3 n0 l# U 要在外设复用功能配置下使用 I/O,用户必须按照以下步骤操作:! r- N$ H1 L7 {$ x 在 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中,将 I/O 连接到所需的 AFx。6 {# h9 U& ]! w) z, P9 j 通过 GPIOx_OTYPER、GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度。 在 GPIOx_MODER 寄存器中将所需 I/O 配置为复用功能。; `% a! a" i* C% J9 S u 对于 ADC 和 DAC等外设,请查阅手册后进行操作。 ; g& i, [8 | b3 w+ Q8 f GPIO寄存器 请查阅手册(RM0433)第11.4节。 3 ^) M: O7 ]$ ]: s9 o- k STM32CubeMX( _2 v' a5 }. n3 v4 W6 G STM32CubeMX关于GPIO的配置比较简单,截图说明如下(以输出模式为例): 5 N5 i* n% D1 q+ z$ p
: a1 X6 c/ b1 S* i) c* c; A HAL/LL库函数功能说明: M3 x; G8 I9 X2 G 控制GPIO相关的HAL库函数不多,只有8个,列表如下:6 R1 X; T1 D* I W) G% ]7 h( L$ v
详细功能去阅读库函数说明文档。例如:STM32H753xx_User_Manual.chm,可在官网下载。 1 n5 r" d4 F; w3 l2 a DEMO 所有DEMO均提供Keil和STM32CubeIDE两个版本,且同时在github和码云进行备份。 . y% p7 ~* O6 }% }+ t# h2 R5 ?
4 C8 e* C7 h& c* w2 M |
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
【福利三:逢7发帖赢大礼】成功利用STM32H743VI片内SRAM12和DTCM空间(完全胜利)
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
【福利三:逢7发帖赢大礼】使用惠勤致远STM32H743VI开发板+ST7796并口彩屏移植LVGL9.5并分享一些额外内容
【 逢7发帖赢大礼】7、TouchGFX中实现云彩流动效果
微信公众号
手机版