STMCU小助手
发布时间:2021-12-18 17:42
|
声明:本篇博客并不是一个详细的教程,只是对本篇涉及到的知识点进行简单整理,罗列出其中疑难、易引起误解的地方。若想对该功能进行全方位的了解,建议直接去看手册。本篇博客分为功能介绍、cubemx界面介绍、hal库函数功能说明、例程Demo四部分。 STM32_H7_GPIO % i- f: S# Q$ l5 N/ z% n 功能介绍 -摘抄手册- a( I7 n. J1 A " l' Q$ B j( j' Z: P 简介! e! B3 s# O0 P. Z" ?( T+ I, _2 _1 k 每个通用 I/O 端口包括 :3 i+ o& E5 u5 \& F + e3 m( K1 b0 o* m2 ]% H. e2 e 4 个 32 位配置寄存器 (GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)- |, |9 s* G, ~8 ^( x 2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)" O5 e- z3 w+ m' E, T3 N 1 个 32 位置位/复位寄存器 (GPIOx_BSRR)。 此外,所有 GPIO 都包括 : 1 个 32 位锁定寄存器 (GPIOx_LCKR)& b4 F5 c# M2 V4 p 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。2 b! v. `0 ]; _# Q+ S* H( y4 h) R 主要特性$ j1 L2 _1 o- ?2 A- s f 从 输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据1 C. Z) R2 }# ~% w* r) o9 } 将数据输入到 输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入) 可为每个 I/O 选择不同的速度+ _& q( ?) u0 m" |+ Z6 O 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限6 v/ E7 W% N0 n; z8 W/ `, T5 k 锁定机制 (GPIOx_LCKR),可冻结 I/O 端口配置, O9 c8 j9 ]$ b6 q 快速翻转,每次翻转最快只需要两个时钟周期 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种2 Y9 y. c6 C% d# K; N( { 可通过软件将通用 I/O (GPIO) 端口的各个端口 位分别配置为多种模式: 5 C) z) n) ~, |% U" s/ z/ n& h# P' B GPIO框图 : E# X4 W z. K: L+ i* _
框图说明: 只需要对上图中的黄色框进行不同的配置,就可将通用 I/O (GPIO) 端口的各个端口位分别配置为多种模式: 输入浮空 输入上拉 输入下拉 模拟输入0 Q/ X' S& m8 M' C' l* J 开漏输出 推挽输出 复用功能推挽3 M+ J7 T4 F. @$ J, [( Q; u5 ^) Z 复用功能开漏& a& M. j! a. V2 G 具体如何配置,在手册(RM0433)第11.3.9、11.3.10、11.3.12、11.3.13小节里有详细的描述,这里不再展开说明。/ \2 h" |$ @. J: t. b: Q* R$ l8 d* U 补充描述$ Y0 v- K' o8 a8 F$ J% ^ 上电复位后引脚状态:6 k v/ ~, u4 E3 v 在复位期间及复位刚刚完成后,大多数 I/O 端口被配置为输入浮空模式。但以下调试功能相关端口例外:; c# ~1 V( L8 P7 l $ N6 ]$ s+ ? J( _- B PA15:JTDI 处于上拉状态; u+ m$ m' F+ S PA14:JTCK/SWCLK 处于下拉状态 PA13:JTMS/SWDAT 处于上拉状态% b0 A) m5 d! O4 I+ [9 A PB4:NJTRST 处于上拉状态 PB3:JTDO 处于浮空状态! K! `/ W" N: q 输入数据寄存器每个 AHB 时钟周期对 I/O 引脚上的数据进行一次采样,在将IO配置为输出时,仍然可以通过输入数据寄存器读取IO电平 I/O 引脚复用功能复用器和映射 要在外设复用功能配置下使用 I/O,用户必须按照以下步骤操作: $ I1 ]/ J* F6 [3 `8 h! A. Y 在 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中,将 I/O 连接到所需的 AFx。, C( T. k3 E: v+ u 通过 GPIOx_OTYPER、GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度。 在 GPIOx_MODER 寄存器中将所需 I/O 配置为复用功能。 x2 p+ C% O$ V6 S 对于 ADC 和 DAC等外设,请查阅手册后进行操作。6 z8 I/ v1 m4 Y m4 l0 ]+ J, | GPIO寄存器 请查阅手册(RM0433)第11.4节。 4 b+ v2 Z% ^, _: U# j7 U STM32CubeMX9 V4 V, V% q1 G9 r; X9 G0 o6 M6 B STM32CubeMX关于GPIO的配置比较简单,截图说明如下(以输出模式为例): & F! U5 f. D( A( D$ V k8 V
HAL/LL库函数功能说明 控制GPIO相关的HAL库函数不多,只有8个,列表如下:. X9 W3 |& d/ I2 U
详细功能去阅读库函数说明文档。例如:STM32H753xx_User_Manual.chm,可在官网下载。1 L6 F$ p! F) a. a DEMO 所有DEMO均提供Keil和STM32CubeIDE两个版本,且同时在github和码云进行备份。5 Z, X0 ~* ?- z! J3 }" j: f 6 G+ k/ e0 G$ u0 C. `! P
: ?0 f5 D+ i) S9 ?: T. p u ) ] I" E3 `( O/ q [ |
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【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实现温度、湿度、气压数据读取
微信公众号
手机版