HAL 库中 GPIO 工作模式配置(H7)
1.配置流程
(1)时钟使能
(2)结构体赋值
(3)写入寄存器
2.配置说明
2.1使能 IO 口时钟
调用函数为:
__HAL_RCC_GPIOX_CLK_ENABLE //使能GPIO时钟(其中 X=A~K)
2.2结构体赋值
在HAL库中stm32h7xx_hal_gpio.h文件中,可以看到GPIO_InitTypeDef结构体定义,如下:
typedef struct
{uint32_t Pin; //指定 IO 口uint32_t Mode; //模式设置uint32_t Pull; //上下拉设置uint32_t Speed; //速度设置uint32_t Alternate;//复用映射配置
}GPIO_InitTypeDef;
赋值说明:
(1)pin:指定IO口
如果多个 IO 口,他们都是对应同一个 GPIOx,那么我们可以通过|(或)的方式同时初始化多个 IO 口。这样操作的前提是,他们的 Mode,Speed,Pull 和 Alternate 参数值相同,因为这些参数并不能一次定义多种。例如:
GPIO_Initure.Pin=GPIO_PIN_9| GPIO_PIN_10| GPIO_PIN_11; //PA9,PA10,PA11
(2)Mode:模式设置
同 STM32F1 一样,STM32H7 的 IO 可以由软件配置成如下 8 种模式中的任何一种:
1、输入浮空
2、输入上拉
3、输入下拉
4、模拟输入
5、开漏输出
6、推挽输出
7、推挽式复用功能
8、开漏式复用功能
GPIO_MODE_ANALOG /*模拟输入,特点:应用ADC模拟输入,或者低功耗下省电*/GPIO_MODE_INPUT /*浮空输入,特点:浮空输入一般多用于外部按键输入,IO的电平状态是不确定
的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的*/GPIO_PULLDOWN /*下拉输入,特点:默认低电平*/GPIO_PULLUP /*上拉输入,特点:默认高电平*/GPIO_Mode_Out_OD /*开漏输出,特点:IO输出0接GND,IO输出1,悬空;接上拉电阻才可以输出高
电平,上升沿速度慢。适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内);可以将多个开漏输出的
Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。*/GPIO_Mode_Out_PP /*推挽输出,特点:可以输出高,低电平,导通损耗小,效率高,读输入值是未
知的*/GPIO_Mode_AF_OD /*复用开漏输出,特点:可以理解为GPIO口被用作第二功能时的配置情况(即并
非作为通用IO口使用),如:片内外设功能(TX1,MOSI,MISO.SCK.SS)*/GPIO_Mode_AF_PP /*复用推挽输出,特点:可以理解为GPIO口被用作第二功能时的配置情况(即并
非作为通用IO口使用),如:片内外设功能(I2C的SCL,SDA)*/
(3)Pull:作为输入引脚时指定
(4)Speed:引脚速度
GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。
高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。例如:
① USART串口,若最大波特率只需115.2k,那用2M的速度就够了,既省电也噪声小。
② I2C接口,若使用400k波特率,若想把余量留大些,可以选用10M的GPIO引脚速度。
③ SPI接口,若使用18M或9M波特率,需要选用50M的GPIO的引脚速度。
(5)Alternate:引脚复用映射
①复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚)
STM32 所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。
②重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功 能的引出脚位是可通过程序改变到其他的引脚上!
直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。
如:USART1: 0: 没有重映像(TX/PA9,RX/PA10); 1: 重映像(TX/PB6,RX/PB7)。
通过参照datasheet上的引脚映射说明,来配置相应复用功能。
3.写入寄存器
在结构体赋值完成后,初始化 IO 参数,调用HAL库中函数将结构体中的值写入到寄存器。
HAL_GPIO_Init(GPIOX,&GPIO_Initure); //写入寄存器,初始化GPIOX(X=A~K)
举例
void LED_Init(void)
{GPIO_InitTypeDef GPIO_Initure;__HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOB时钟GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PB0,1GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出GPIO_Initure.Pull=GPIO_PULLUP; //上拉GPIO_Initure.Speed=GPIO_SPEED_FREQ_VERY_HIGH; //高速HAL_GPIO_Init(GPIOB,&GPIO_Initure); //初始化GPIOB.0和GPIOB.1HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET); //PB0置1HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //PB1置1
}
HAL 库中 GPIO 工作模式配置(H7)相关推荐
- 【STM32笔记】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全的问题)
[STM32笔记]HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒.串口唤醒和回调无法一起使用.接收数据不全的问题) [STM32笔记]低功耗模式配置及避坑汇总 前文: blog.csd ...
- 【四】零基础上手HAL库之—GPIO按键
[四]零基础上手HAL库之-GPIO按键 3.1前言 我们在上一节已经知道了点灯操作,相当于是学会了GPIO输出的配置,接下来是GPIO输入完成按键扫描的操作. 前期准备 STM32各类型的板子(本人 ...
- STM32的HAL库SPI操作(Slave模式)
Slave模式设置 SPI的使用,Master端的很多,Slave端的不好找,也很少,能参考的也很少,后面具体来看一下: Slave端的初始化程序和Master端的只有一行不同 hspi1.Init. ...
- 如何从HAL库中找到寄存器的蛛丝马迹
以下文章来源于:公_众_号开源电子网 读取更多技术文章,请扫码关注 如何从HAL库中找到寄存器的蛛丝马迹 对于初学者来说,有时候知其然而不知其所以然,换句话来讲,知道这个东西是这样子操作,但是不知道为 ...
- hal库开启中断关中断_[STM32]HAL库下GPIO按键中断与去抖问题分析(分析源码解决问题)...
自上篇文章STM32 非阻塞HAL_UART_ReceiveIT解析与实际应用,具体总结了HAL库下套娃函数中如何看清库函数的脉络,更细致的认识调用的过程,以解决潜在的问题.又又又遇到了新的问题(GP ...
- gpio的8种工作模式_Stm32之GPIO工作模式简介
GPIO的8种工作模式 GPIO初始化结构体的时候,必须要配置合适的工作模式,这样才能使得IO口发挥应有的作用.工作模式大体上共分为输入输出两类,共8种,下面将介绍这8种工作模式. GPIO工作模式 ...
- Apache 工作模式配置优化
Apahce 工作模式配置 1.查看当前MPM工作模式 /usr/local/apache2/bin/apachectl -VServer version: Apache/2.4.27 (Unix) ...
- STM32F4 HAL库开发 --时钟使能和配置
在STM32F4的HAL库中,外设时钟使能操作都是在RCC相关固件库文件头文件stm32f4xx_hal_rcc.h 定义的.外设时钟使能在HAL库中都是通过宏定义标识符来实现.首先,我们来看看GPI ...
- 【STM32】HAL库-电源控制(低功耗模式)
电源框图 STM32 的电源系统主要分为备份域电路.内核电路以及 ADC 电路三部分 备份域电路 STM32 的 LSE 振荡器.RTC.备份寄存器及备份 SRAM 这些器件被包含进备份域电路中,这部 ...
最新文章
- 爬虫学习笔记(十七)—— 字符验证码
- matlab潮流程序,IEEE33节点matlab潮流程序.doc
- 为什么 ASP.NET Core WebAPI 继承 ControllerBase 而不是 Controller ?
- android studio简易记账本,Android记账本
- [转] 我回答了90%的面试题,为什么还被拒?
- 美团打车低至1分,前三月司机零抽成,快车市场将再起波澜
- linux 提取有效源码,MPSOC之4——petalinux提取源码
- 架构案例丨微信Android客户端架构演进之路
- 小米手机助手linux,小米手机助手
- 用python处理蛋白质互作信息
- Labelling tools 的环境配置
- 希捷硬盘查询保修期限的网址
- Partition Refinement
- 数字货币或将消灭银行 未来3至5年,银行业可能将崩溃?
- linux滚动升级版本,Linux发行基础滚动版本与标准版本 | MOS86
- cbac式_abca式的成语
- 【智能制造】物流装备制造业发展全解读
- 中山大学计算机在职研究生分数线,中山大学在职研究生考试成绩多少分通过
- 程序员:不是所有的程序员称为程序员!
- 耗时一个月,开发了一款基于腾讯语音自动给视频添加字幕的软件