STM32F1xx HAL库 中文详解 之 GPIO篇

本篇主要讲解 STM32F1xx HAL库 中gpio部分的结构体,函数及应用。

目录

一、结构体部分

二、函数部分

2.1所有函数及功能总览

2.2各函数详细介绍

三、如何使用这个驱动程序  


一、结构体部分

  1. typedef struct
  2. {
  3. uint32_t Pin            //选择引脚
  4. uint32_t Mode        //设置模式
  5. uint32_t Pull          //设置上拉下拉
  6. uint32_t Speed      //设置速度
  7. } GPIO_InitTypeDef;

结构体中用到的宏定义:

GPIO pins define(引脚选择)

GPIO_PIN_0          引脚0

GPIO_PIN_1          引脚1

GPIO_PIN_2          引脚2

GPIO_PIN_3          引脚3

GPIO_PIN_4          引脚4

GPIO_PIN_5          引脚5

GPIO_PIN_6          引脚6

GPIO_PIN_7          引脚7

GPIO_PIN_8          引脚8

GPIO_PIN_9          引脚9

GPIO_PIN_10          引脚10

GPIO_PIN_11          引脚11

GPIO_PIN_12          引脚12

GPIO_PIN_13          引脚13

GPIO_PIN_14          引脚14

GPIO_PIN_15          引脚15

GPIO_PIN_All               所有引脚选定

GPIO_PIN_MASK         维护测试的PIN掩码

GPIO mode define(模式设置)

GPIO_MODE_INPUT                  浮动输入模式  

GPIO_MODE_OUTPUT_PP            推挽输出模式

GPIO_MODE_OUTPUT_OD            开漏输出模式

GPIO_MODE_AF_PP Alternate         复用推挽输出

GPIO_MODE_AF_OD Alternate            复用开漏输出

GPIO_MODE_AF_INPUT Alternate      复用输入模式

GPIO_MODE_ANALOG                模拟模式

GPIO_MODE_IT_RISING               外部中断模式与上升边缘触发检测

GPIO_MODE_IT_FALLING               外部中断模式与下降边缘触发检测

GPIO_MODE_IT_RISING_FALLING     外部中断模式上升或者下降边缘触发检测

GPIO_MODE_EVT_RISING               外部事件模式上升边缘触发检测

GPIO_MODE_EVT_FALLING           外部事件模式下降边缘触发检测

GPIO_MODE_EVT_RISING_FALLING   外部事件模式下降/上升边缘触发检测

GPIO pull define(设置上拉和下拉电阻)

GPIO_NOPULL           没有激活上拉或者下拉

GPIO_PULLUP           激活上拉模式

GPIO_PULLDOWN     激活下拉模式

GPIO speed define(设置速度)

GPIO_SPEED_LOW            低速

GPIO_SPEED_MEDIUM     中速

GPIO_SPEED_HIGH          高速

  1. typedef enum
  2. {
  3. GPIO_PIN_RESET = 0u, //置0
  4. GPIO_PIN_SET //置1
  5. } GPIO_PinState;

枚举类型结构体,使引脚重置(0)或设置(1)

二、函数部分

2.1所有函数及功能总览

函数名 功能
HAL_GPIO_Init() 根据GPIO_Init中指定的参数初始化GPIOx外设
HAL_GPIO_DeInit() 使GPIOx外围设备寄存器到它们的默认重置值
HAL_GPIO_ReadPin() 读取指定的输入端口引脚
HAL_GPIO_WritePin() 设置或清除指定的数据端口位
HAL_GPIO_TogglePin() 切换指定的GPIO引脚(操作BSRR和BRR)
HAL_GPIO_LockPin() 锁定GPIO引脚配置寄存器
HAL_GPIO_EXTI_IRQHandler() 处理EXTI中断请求
HAL_GPIO_EXTI_Callback() EXTI lines检测回调函数

2.2各函数详细介绍

HAL_GPIO_Init

函数名 void HAL_GPIO_Init (GPIO_TypeDef * GPIOx,
GPIO_InitTypeDef * GPIO_Init)
功能 根据GPIO_Init中指定的参数初始化GPIOx外设
参数

GPIOx: x可以是(A..G取决于所使用的设备)来选择GPIO外围设备

GPIO Init:指向GPIO InitTypeDef结构的指针,该结构包含指定GPIO外围设备的配置信息

返回值

HAL_GPIO_DeInit

函数名 void HAL_GPIO_DeInit (GPIO_TypeDef * GPIOx, uint32_t
GPIO_Pin)
功能 使GPIOx外围设备寄存器到它们的默认重置值
参数

GPIOx: x可以是(A..G取决于所使用的设备)来选择GPIO外围设备

GPIO Pin:指定要写入的端口位。该参数可以是GPIO PIN x中的一个,其中x可以是(0..15)

返回值

HAL_GPIO_ReadPin

函数名 GPIO_PinState HAL_GPIO_ReadPin (GPIO_TypeDef * GPIOx,
uint16_t GPIO_Pin)
功能 读取指定的输入端口引脚
参数

GPIOx: x可以是(A..G取决于所使用的设备)来选择GPIO外围设备

GPIO Pin:指定要读入的端口位。该参数可以是GPIO PIN x中的一个,其中x可以是(0..15)

返回值 输入端口引脚值

HAL_GPIO_WritePin

函数名 void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t
GPIO_Pin, GPIO_PinState PinState)
功能 设置或清除指定的数据端口位
参数

GPIOx: x可以是(A..G取决于所使用的设备)来选择GPIO外围设备

GPIO Pin:指定要写入的端口位。该参数可以是GPIO PIN x中的一个,其中x可以是(0..15)

PinState:指定要写入所选位的值。可以是GPIO PinState enum的值之一:

        GPIO BIT RESET:清除端口引脚

        GPIO BIT SET:设置端口引脚

返回值

HAL_GPIO_TogglePin

函数名 void HAL_GPIO_TogglePin (GPIO_TypeDef * GPIOx, uint16_t
GPIO_Pin)
功能 切换指定的GPIO引脚(操作BSRR和BRR)
参数

GPIOx: x可以是(A..G取决于所使用的设备)来选择GPIO外围设备

GPIOGPIO_Pin:指定要切换的引脚

返回值

HAL_GPIO_LockPin

函数名 HAL_StatusTypeDef HAL_GPIO_LockPin (GPIO_TypeDef *
GPIOx, uint16_t GPIO_Pin)
功能 锁定GPIO引脚配置寄存器
参数

GPIOx: x可以是(A..G取决于所使用的设备)来选择GPIO外围设备

GPIO Pin:表示要锁定的端口位。这个参数可以是GPIO管脚x的任意组合,其中x可以是(0..15)

返回值

HAL_GPIO_EXTI_IRQHandler

函数名 void HAL_GPIO_EXTI_IRQHandler (uint16_t GPIO_Pin)
功能 处理EXTI中断请求
参数 GPIO_Pin:连接EXTI线的引脚
返回值

HAL_GPIO_EXTI_Callback

函数名 void HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin)
功能 EXTI lines检测回调函数
参数 GPIO_Pin:连接EXTI线的引脚
返回值

三、如何使用这个驱动程序  

1.  开启GPIO APB2时钟功能的方法如下:  

        __HAL_RCC_GPIOx_CLK_ENABLE()  

2.  使用HAL_GPIO_Init()配置GPIO管脚  

        2.1使用GPIO_InitTypeDef结构中的“mode”成员配置IO模式  

        2.2使用GPIO_InitTypeDef中的Pull成员激活上拉,下拉电阻  

        2.3如果输出或替代功能模式选择:速度配置通过GPIO_InitTypeDef结构中的“Speed”成员  

        2.4当引脚用作ADC通道或DAC时,需要模拟模式输出  

        2.5如果外部中断/事件选择模式成员从GPIO_InitTypeDef结构选择类型(中断或事件)和相应的触发事件(上升或下降或两者皆有)

3. 当选择外部中断/事件模式时,配置NVIC IRQ优先级使用HAL_NVIC_SetPriority()映射到EXTI,并使用HAL_NVIC_EnableIRQ()  

4.  要获得在输入模式下配置的引脚的电平高低,使用HAL_GPIO_ReadPin()  

5.  设置/翻转在输出模式下配置的引脚的电平HAL_GPIO_WritePin () / HAL_GPIO_TogglePin()  

6.  使用HAL_GPIO_LockPin()来锁定引脚配置,直到下一次重置  

7.  在复位期间和复位后,备用功能不活动,GPIO引脚配置为输入浮动模式(JTAG引脚除外)  

8.  LSE振荡器关闭时,LSE振荡器管脚OSC32_INOSC32_OUT可以作为通用器件使用(分别为PC14PC15), LSE有优先权通过GPIO功能  

9.  HSE振荡管脚OSC_IN/OSC_OUT可作为PD0和当HSE振荡器关闭时为PD1, HSEGPIO有优先权

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇