STM32H7学习继续(STM32H7系列5)第十七章比较实用,以后写程序的时候会用到

几个重要的参考网址

1.电子工程世界网
http://tags.eeworld.com.cn/tags/STM32H7
链接: link.
2.转:https://blog.csdn.net/simon223/article/list/2?t=1
链接: link.
————————————————
版权声明:本文为CSDN博主「Simon223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/89533339

3.https://www.stmcu.com.cn/Designresource/design_list/cat_code/firmware_software/pro_cat/STM32/is_first/1
4.STM32Cube论坛
http://www.stm32cube.com/
链接: link.
5.https://blog.csdn.net/jxgz_leo/article/details/88600995

按照1网址的顺序学习

17. STM32H7之GPIO的HAL库API

我这里简单的总结一下GPIO的APi函数:

  1. HAL_GPIO_Init:此函数用于初始化GPIO
    先定义,配置结构体GPIO_InitTypeDef,再调用此函数初始化
  2. HAL_GPIO_DeInit:此函数用于复位IO到初始化状态
  3. HAL_GPIO_ReadPin:此函数用于读取引脚状态,通过GPIO的IDR寄存器读取。
  4. HAL_GPIO_WritePin:此函数用于设置引脚输出高电平或者低电平。使用GPIO的BSRR寄存器进行设置,使用这个寄存器的好处是支持原子操作,由硬件支持的。
  5. HAL_GPIO_TogglePin:此函数用于设置引脚的电平翻转,使用GPIO的ODR寄存器进行设置。
  6. HAL_GPIO_LockPin:此函数用于锁住GPIO引脚所涉及到的寄存器,这些寄存器包括GPIOx_MODER,GPIOx_OTYPER,GPIOx_OSPEEDR,GPIOx_PUPDR,GPIOx_AFRL 和 GPIOx_AFRH。
    注意事项:

此函数是锁住用户设置的引脚所对应的寄存器某些位,并不是把整个寄存器都锁住了。
一旦锁住后,就不能再修改,只有复位后才可以重新配置。

如何使用HAL库的GPIO驱动
使用方法由HAL库提供(本章17.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。

另外注意下面三个问题:

系统上电复位后,GPIO默认是模拟模式,除了JTAG相关引脚。
关闭LSE的话,用到的两个引脚OSC32_IN和OSC32_OUT(分别是PC14,PC15)可以用在通用IO,如果开启了,就不能再做GPIO。
关闭HSE的话,用到的两个引脚OSC_IN和OSC_OUT(分别是PH0,PH1)可以用在通用IO,如果开启了,就不能再做GPIO。
————————————————
版权声明:本文为CSDN博主「Simon223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/89952236

附上简单的 跑马灯程序做例子

STM32H7学习继续(STM32H7系列5)第十七章比较实用,以后写程序的时候会用到