1.HAL库:hardware abstraction layer:硬件抽象层
2.GPIO初始化的步骤:定义GPIO结构体GPIO_InitTypeDef–>使能对应GPIO端口时钟如E组GPIO, __HAL_RCC_GPIOE_CLK_ENABLE();–>配置GPIO(GPIO_InitStruct.Pin = GPIO_PIN_5;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;)–>初始化该端口 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct)–>完成GPIO的初始化操作;
3.基于keil V5.25编译,HAL库版本V1.7.0,基于STM32
4.常见的基于HAL的GPIO操作定义在#include "stm32f1xx_hal_gpio.h中均有定义
//GPIO初始化函数
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
//关闭GPIO初始化
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
/IO口操作相关函数
/* IO operation functions *****************************************************/
/IO口电平读取函数(高电平 1 低电平 0)
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//IO口输出电平,设置为输出1或者0
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
//输出电平翻转1->0或 0->1
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//锁定某个IO口的电平
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//IO口外部中断函数
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
//外部中断回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
---------------------
简单来说就是(1)定义结构体变量。(2)使能时钟。(3)配置初始化电平。(4)通过结构体变量初始化GPIO。