1.【STM32H7教程】第17章 STM32H7之GPIO的HAL库API
【STM32H7教程】第17章 STM32H7之GPIO的HAL库API
.1 初学者重要提示
1、 如何阅读HAL库源码的问题
HAL库实现的函数有复杂的,也有简单的,简单的可以直接阅读代码。复杂的代码阅读起来比较耗时间,如果再配合参考手册抠每个寄存器的vmm 源码配置,那就更消耗时间了。所以对于这种函数,用户仅需了解每个部分实行的功能即可,而且HAL库都做了关键注释,以说明这部分实现的功能。所以用户没有必要去抠每个配置是如何实现的,仅需知道实现了什么功能。以后工程项目有需要了解具体配置时,再看即可。
2、 学习本章节前,务必保证已经学习了第章。
.2 GPIO涉及到的使命召唤ol 源码寄存器
GPIO外设涉及到的寄存器比较少,也容易理解,推荐大家阅读GPIO源码的时候将参考手册中对应的寄存器功能做一个了解。
很多时候,我们会直接调用GPIO的寄存器进行配置,而不使用HAL进行调用,以提高执行效率,特别是中断里面执行时。
.3 源文件stmh7xx_hal_gpio.c
这个文件主要是实现GPIO的引脚配置,学习这个文件注意事项:
.3.1 函数HAL_GPIO_Init
函数原型:
函数描述:
此函数用于初始化GPIO,外围开奖网源码此函数主要实现如下功能:
函数参数:
下面将结构体每个成员做个说明:
成员Pull用于配置上拉下拉电阻:
成员Speed用于配置GPIO速度等级,有下面四种可选:
成员Alternate用于配置引脚复用,可选择的复用方式在文件stmh7xx_hal_gpio_ex.h里面进行了定义,比如串口复用:
注意事项:
如果是程序运行期间的引脚状态切换,最好采用下面的方式或者直接寄存器操作:
.3.2 函数HAL_GPIO_DeInit
函数原型:
函数描述:
此函数用于复位IO到初始化状态,具体状态看函数原型中的注释即可。
函数参数:
使用举例:
此函数的使用比较简单,需要调用的时候直接调用即可。
.3.3 函数HAL_GPIO_ReadPin
函数原型:
函数描述:
此函数用于读取引脚状态,撩吧app源码通过GPIO的IDR寄存器读取。
函数参数:
使用举例:
此函数的使用比较简单,需要调用的时候直接调用即可。
.3.4 函数HAL_GPIO_WritePin
函数原型:
函数描述:
此函数用于设置引脚输出高电平或者低电平。使用GPIO的BSRR寄存器进行设置,使用这个寄存器的好处是支持原子操作,由硬件支持的。原子操作的含义是操作过程不会被中断打断,而我们使用GPIO中另一个设置输出的贵州农业溯源码寄存ODR是会被中断打断的。大家看下寄存器赋值操作对应的反汇编,是由多条汇编指令组成的。
函数参数:
使用举例:
此函数的使用比较简单,需要调用的时候直接调用即可。
.3.5 函数HAL_GPIO_TogglePin
函数原型:
函数描述:
此函数用于设置引脚的电平翻转,使用GPIO的ODR寄存器进行设置。
函数参数:
使用举例:
此函数的使用比较简单,需要调用的时候直接调用即可。
.3.6 函数HAL_GPIO_LockPin
函数原型:
函数描述:
此函数用于锁住GPIO引脚所涉及到的寄存器,这些寄存器包括GPIOx_MODER,GPIOx_OTYPER,GPIOx_OSPEEDR,GPIOx_PUPDR,GPIOx_AFRL 和 GPIOx_AFRH。
函数参数:
注意事项:
使用举例:
此函数的使用比较简单,需要调用的时候直接调用即可。
.4 如何使用HAL库的GPIO驱动
使用方法由HAL库提供(本章.3.1小节提供的例子就是这种方式):
第1步:使能GPIO所在总线的AHB时钟,__HAL_RCC_GPIOx_CLK_ENABLE()。
第2步:通过函数HAL_GPIO_Init()配置GPIO。
(1) 通过结构体GPIO_InitTypeDef的成员Mode配置输入、输出、模拟等模式。
(2) 通过结构体GPIO_InitTypeDef的成员Pull配置上拉、下拉电阻。
(3) 通过结构体GPIO_InitTypeDef的成员Speed配置GPIO速度等级。
(4) 如果选择了复用模式,那么就需要配置结构体GPIO_InitTypeDef的成员Alternate。
(5) 如果引脚功能用于ADC、DAC的话,需要配置引脚为模拟模式。
(6) 如果是用于外部中断/事件,结构体GPIO_InitTypeDef的成员Mode可以配置相应模式,相应的上升沿、下降沿或者双沿触发也可以选择。
第3步:如果配置了外部中断/事件,可以通过函数HAL_NVIC_SetPriority设置优先级,然后调用函数HAL_NVIC_EnableIRQ使能此中断。
第4步:输入模式读取引脚状态可以使用函数HAL_GPIO_ReadPin。
第5步:输出模式设置引脚状态可以调用函数HAL_GPIO_WritePin()和HAL_GPIO_TogglePin。
另外注意下面三个问题:
.5 总结
本章节就为大家讲解这么多,建议大家将GPIO的驱动源码结合参考手册中的寄存器通读一遍,对于我们后面章节的学习大有裨益。
2025-01-24 11:02889人浏览
2025-01-24 10:532547人浏览
2025-01-24 10:051212人浏览
2025-01-24 09:53440人浏览
2025-01-24 09:33132人浏览
2025-01-24 08:56755人浏览
中国消费者报报道近年来,江苏省常州市金坛区聚焦美丽乡村放心消费创建,致力于打造宜居宜业宜游的美好家园,用“三色”描绘出美丽乡村新画卷,为乡村振兴注入新动力,提升人们的幸福感和获得感。放心消费与美丽乡村
1.php中#eeeeee代表什么颜色2.现代简约装修酒柜板用灰色还是原木色好看3.php 图象处理函数 imagestring 函数的运用4.风靡ins的灰色系都汇总在这里了!php中#eeeee
1.???? Դ?????? Դ?? 龙兵企微SCRM系统凭借其强大的功能,助力企业无缝整合企业微信和小程序,实现全方位的数字化营销与运营。该系统专为企业打造私域流量增长平台,提升销售业绩,主