STM32F1xx HAL库中文版库中文版——GPIO篇篇
第一次写博客,也是第一次翻译英文文档,因为网上都没找到hal固件库的文档,索性自己花了半天翻译了,之后将继续更新
其他外设
20 HAL GPIO Generic Driver
20.1 GPIO固件驱动寄存器结构体
20.1.1 GPIO_InitTypeDef
GPIO_InitTypeDef被定义在 stm32l5xx_hal_gpio.h 这个头文件中
数据域
• uint32_t Pin
•uint32_t Mode
•uint32_t Pull
•uint32_t speed
Field Documentation 字段文档
•uint32_t GPIO_InitTypeDef::Pin
指定GPIO的引脚进行配置,这个参数可以是GPIO_pins的任意值
•uint32_t GPIO_InitTypeDef::Mode
指定选定的引脚模式,这个参数可以是GPIO_mode中的任意值
•uint32_t GPIO_InitTypeDef::Pull
GPIO_pull指定选定的引脚为拉高或者拉低的电平,这个参数可以是GPIO_pull中的任意值
•uint32_t GPIO_InitTypeDef::Speed
指定选定的引脚速度,这个参数可以是GPIO_speed中的任意值
20.2 GPIO固件驱动应用程序接口描述
接下来的章节列出了多种GPIO库的不同功能
20.2.1 GPIO外围设备特征
服从于数据手册中列出的每个I/O口的特定硬件特征,每个通用I/O口可以被单独地由软件配置成以下几种模式:
• 输入模式
• 模拟端子模式
• 输出模式
•复用功能模式
• 外部中断线
在复位和刚刚复位完的期间,复用功能和外部中断线处于休眠状态,I/O口配置为浮空输入模式
所有的GPIO引脚都有内部拉高或者拉低的弱电阻,可以人为激活或者休眠
在输出或者复用模式每个I/O口可以被配置成开漏或者推挽类型,I/O口的速度可以由VDD的值进行选择决定
所有的端口都有外部中断/事件功能,为了使用外部中断线,端口必须被配置成为输入模式。所有的可获得GPIO引脚都被连接
到了EXTI0-EXTI15这16条外部中断/事件线上。
外部的中断/事件控制器由多达20个的连接线设备中的边缘检测器组成,或者由19个其他设备中生成事件/中断请求边缘检测器
组成。每个输入线都能独立地配置去选择类型(事件或者中断),相应的触发事件(上升或者下降)。
每条线都可以单独屏蔽,一个挂起的寄存器维持了中断需求的状态行。
20.2.2 如何使用这个驱动
1.使能GPIO APB2时钟使用了如下的函数:__HAL_RCC_GPIOx_CLK_ENABLE().
2.配置GPIO引脚使用了HAL_GPIO_Init().函数
—配置IO模式使用GPIO_InitTypeDef structure中的“Mode”成员变量
—激活使能上拉,下拉电平使用了GPIO_InitTypeDef structure.中的“Pull”成员变量
—如果使用输出或者复用功能模式:通过GPIO_InitTypeDef structure中的“Speed”成员变量配置速度。
—当引脚被用作ADC或者DAC输出通道时,需要被配置成为模拟端子模式
—在外部中断/事件选择的情况下,GPIO_InitTypeDef结构中的“Mode”成员选择类型(中断或事件)和相应的触发事件(上升或下
降或两者都有)。
3.当选择了外部中断/事件模式,使用HAL_NVIC_SetPriority()函数配置NVIC IRQ优先级映射到EXTI线上,并且通过
HAL_NVIC_EnableIRQ().函数使能它。
4.在输入模式下使用use HAL_GPIO_ReadPin()函数获得引脚的配置级别
5.在输出模式下使用HAL_GPIO_WritePin()/HAL_GPIO_TogglePin()函数设置或者重设引脚的级别
6. 使用HAL_GPIO_LockPin()来锁定引脚配置直到下一次复位
7.在复位或者刚复位期间,复用功能未激活,GPIO引脚被配置为浮空模式(除了JTAG引脚)。
8.当LSE振荡器关闭的时候,它的OSC32_IN 和OSC32_OUT可以被用作一般用途(分别是PC14和PC15),LSE比GPIO函
数有更高的优先级。
9. 当HSE振荡器关闭的时候,HSE振荡器引脚OSC_IN/OSC_OUT能被相应地用作PD0和PD1的一般用途,HSE比GPIO函数
拥有更高的优先级。
20.2.3 初始化和反初始化函数
这个章节提供了函数以供初始化和反初始化GPIOS使用
这个章节包含了以下的接口:
• HAL_GPIO_Init
• HAL_GPIO_DeInit
20.2.4 IO操作函数