Blog Details

STM32HAL库总结

STM32HAL库总结

一、HAL库常用函数分类总结1. 通用功能函数1.1 系统初始化1.2 延时函数

2. GPIO函数2.1 初始化和配置2.2 读写操作2.3 中断处理

3. USART/UART函数3.1 初始化和配置3.2 数据收发3.3 回调函数

4. SPI函数4.1 初始化和配置4.2 数据收发4.3 回调函数

5. I2C函数5.1 初始化和配置5.2 主模式操作5.3 从模式操作5.4 内存操作5.5 回调函数

6. ADC函数6.1 初始化和配置6.2 数据采集6.3 回调函数

7. TIM定时器函数7.1 初始化和配置7.2 PWM功能7.3 输入捕获7.4 编码器模式7.5 中断和回调

8. DMA函数8.1 初始化和配置8.2 数据传输8.3 回调函数

9. 中断处理9.1 通用中断处理

10. 其他实用函数10.1 状态和错误处理10.2 低功耗模式

二、简洁表格版1. 通用功能2. GPIO3. USART/UART4. SPI5. I2C6. ADC7. TIM定时器8. DMA9. 中断管理10. 回调函数

提示:以下是本篇文章正文内容,下面案例可供参考

一、HAL库常用函数分类总结

1. 通用功能函数

1.1 系统初始化

HAL_Init(): 初始化HAL库

参数: 无功能: 初始化HAL库和底层硬件 HAL_DeInit(): 反初始化HAL库

参数: 无功能: 恢复所有外设寄存器到默认值 SystemClock_Config(): 系统时钟配置

参数: 无(通常需要用户自定义实现)功能: 配置系统时钟、AHB/APB总线时钟等

1.2 延时函数

HAL_Delay(uint32_t Delay)

参数: Delay - 延时毫秒数功能: 提供毫秒级延时 HAL_GetTick(void)

参数: 无功能: 获取从HAL_Init()调用以来的毫秒数

2. GPIO函数

2.1 初始化和配置

HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)

参数:

GPIOx: GPIO端口(A,B,C等)GPIO_Init: 初始化结构体指针 功能: 初始化GPIO引脚 HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)

参数:

GPIOx: GPIO端口GPIO_Pin: 要复位的引脚 功能: 复位GPIO引脚

2.2 读写操作

HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

参数:

GPIOx: GPIO端口GPIO_Pin: 引脚号PinState: GPIO_PIN_SET或GPIO_PIN_RESET 功能: 设置引脚输出状态 HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

参数:

GPIOx: GPIO端口GPIO_Pin: 引脚号 功能: 翻转引脚状态 HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

参数:

GPIOx: GPIO端口GPIO_Pin: 引脚号 功能: 读取引脚输入状态

2.3 中断处理

HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)

参数: GPIO_Pin - 触发中断的引脚功能: EXTI中断处理函数 HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

参数: GPIO_Pin - 触发中断的引脚功能: EXTI中断回调函数(需用户实现)

3. USART/UART函数

3.1 初始化和配置

HAL_UART_Init(UART_HandleTypeDef *huart)

参数: huart - UART句柄指针功能: 初始化UART HAL_UART_DeInit(UART_HandleTypeDef *huart)

参数: huart - UART句柄指针功能: 反初始化UART

3.2 数据收发

HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

参数:

huart: UART句柄,也就是&huart1,&huart2,&huart3pData: 发送数据指Size: 数据大小Timeout: 超时时间 功能: 阻塞式发送数据 HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

参数: 同上功能: 阻塞式接收数据 HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

参数:

huart: UART句柄pData: 发送数据指针Size: 数据大小 功能: 中断方式发送数据 HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

参数: 同上功能: 中断方式接收数据 HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

参数: 同上功能: DMA方式发送数据 HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

参数: 同上功能: DMA方式接收数据

3.3 回调函数

HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)

参数: huart - UART句柄功能: 发送完成回调函数 HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

参数: huart - UART句柄功能: 接收完成回调函数

4. SPI函数

4.1 初始化和配置

HAL_SPI_Init(SPI_HandleTypeDef *hspi)

参数: hspi - SPI句柄指针功能: 初始化SPI HAL_SPI_DeInit(SPI_HandleTypeDef *hspi)

参数: hspi - SPI句柄指针功能: 反初始化SPI

4.2 数据收发

HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)

参数:

hspi: SPI句柄pData: 发送数据指针Size: 数据大小Timeout: 超时时间 功能: 阻塞式发送数据 HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)

参数: 同上功能: 阻塞式接收数据 HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)

参数:

pTxData: 发送数据指针pRxData: 接收数据指针 功能: 阻塞式全双工收发 HAL_SPI_Transmit_IT()/HAL_SPI_Receive_IT()/HAL_SPI_TransmitReceive_IT()

参数: 类似阻塞版本功能: 中断方式数据收发 HAL_SPI_Transmit_DMA()/HAL_SPI_Receive_DMA()/HAL_SPI_TransmitReceive_DMA()

参数: 类似阻塞版本功能: DMA方式数据收发

4.3 回调函数

HAL_SPI_TxCpltCallback()/HAL_SPI_RxCpltCallback()/HAL_SPI_TxRxCpltCallback()

参数: SPI句柄功能: 各种操作完成回调

5. I2C函数

5.1 初始化和配置

HAL_I2C_Init(I2C_HandleTypeDef *hi2c)

参数: hi2c - I2C句柄指针功能: 初始化I2C HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)

参数: hi2c - I2C句柄指针功能: 反初始化I2C

5.2 主模式操作

HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)

参数:

hi2c: I2C句柄DevAddress: 从设备地址pData: 发送数据指针Size: 数据大小Timeout: 超时时间 功能: 主设备阻塞式发送 HAL_I2C_Master_Receive(): 类似发送函数

功能: 主设备阻塞式接收 HAL_I2C_Master_Transmit_IT()/HAL_I2C_Master_Receive_IT(): 中断版本

HAL_I2C_Master_Transmit_DMA()/HAL_I2C_Master_Receive_DMA(): DMA版本

5.3 从模式操作

HAL_I2C_Slave_Transmit()/HAL_I2C_Slave_Receive(): 从设备操作类似主模式有阻塞、中断和DMA版本

5.4 内存操作

HAL_I2C_Mem_Write()/HAL_I2C_Mem_Read(): 读写设备内存也有阻塞、中断和DMA版本

5.5 回调函数

HAL_I2C_MasterTxCpltCallback()/HAL_I2C_MasterRxCpltCallback()HAL_I2C_SlaveTxCpltCallback()/HAL_I2C_SlaveRxCpltCallback()HAL_I2C_MemTxCpltCallback()/HAL_I2C_MemRxCpltCallback()

6. ADC函数

6.1 初始化和配置

HAL_ADC_Init(ADC_HandleTypeDef *hadc)

参数: hadc - ADC句柄指针功能: 初始化ADC HAL_ADC_DeInit(ADC_HandleTypeDef *hadc)

参数: hadc - ADC句柄指针功能: 反初始化ADC HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *sConfig)

参数:

hadc: ADC句柄sConfig: 通道配置结构体 功能: 配置ADC通道

6.2 数据采集

HAL_ADC_Start(ADC_HandleTypeDef *hadc)

参数: hadc - ADC句柄功能: 启动ADC转换 HAL_ADC_Stop(ADC_HandleTypeDef *hadc)

参数: hadc - ADC句柄功能: 停止ADC转换 HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)

参数:

hadc: ADC句柄Timeout: 超时时间 功能: 轮询等待转换完成 HAL_ADC_GetValue(ADC_HandleTypeDef *hadc)

参数: hadc - ADC句柄功能: 获取转换结果 HAL_ADC_Start_IT()/HAL_ADC_Start_DMA(): 中断和DMA方式启动

6.3 回调函数

HAL_ADC_ConvCpltCallback()/HAL_ADC_ConvHalfCpltCallback()HAL_ADC_ErrorCallback()

7. TIM定时器函数

7.1 初始化和配置

HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)

参数: htim - TIM句柄指针功能: 初始化基本定时器 HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)

参数: htim - TIM句柄功能: 启动基本定时器 HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim)

参数: htim - TIM句柄功能: 停止基本定时器

7.2 PWM功能

HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim)

参数: htim - TIM句柄功能: 初始化PWM HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel)

参数:

htim: TIM句柄sConfig: PWM配置结构体Channel: TIM通道 功能: 配置PWM通道 HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)

参数:

htim: TIM句柄Channel: TIM通道 功能: 启动PWM输出

7.3 输入捕获

HAL_TIM_IC_Init(TIM_HandleTypeDef *htim)

参数: htim - TIM句柄功能: 初始化输入捕获 HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel)

参数:

htim: TIM句柄sConfig: 输入捕获配置Channel: TIM通道 功能: 配置输入捕获通道

7.4 编码器模式

HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig)

参数:

htim: TIM句柄sConfig: 编码器配置 功能: 初始化编码器模式

7.5 中断和回调

HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

参数: htim - TIM句柄功能: 定时器周期完成回调 HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)

参数: htim - TIM句柄功能: 输入捕获回调

8. DMA函数

8.1 初始化和配置

HAL_DMA_Init(DMA_HandleTypeDef *hdma)

参数: hdma - DMA句柄指针功能: 初始化DMA HAL_DMA_DeInit(DMA_HandleTypeDef *hdma)

参数: hdma - DMA句柄指针功能: 反初始化DMA

8.2 数据传输

HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)

参数:

hdma: DMA句柄SrcAddress: 源地址DstAddress: 目标地址DataLength: 数据长度 功能: 启动DMA传输 HAL_DMA_Abort(DMA_HandleTypeDef *hdma)

参数: hdma - DMA句柄功能: 中止DMA传输

8.3 回调函数

HAL_DMA_XferCpltCallback(DMA_HandleTypeDef *hdma)

参数: hdma - DMA句柄功能: 传输完成回调 HAL_DMA_XferErrorCallback(DMA_HandleTypeDef *hdma)

参数: hdma - DMA句柄功能: 传输错误回调

9. 中断处理

9.1 通用中断处理

HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)

参数:

IRQn: 中断号PreemptPriority: 抢占优先级SubPriority: 子优先级 功能: 设置中断优先级 HAL_NVIC_EnableIRQ(IRQn_Type IRQn)

参数: IRQn - 中断号功能: 使能中断 HAL_NVIC_DisableIRQ(IRQn_Type IRQn)

参数: IRQn - 中断号功能: 禁用中断

10. 其他实用函数

10.1 状态和错误处理

HAL_GetError(void)

参数: 无功能: 获取最后一次操作的错误代码 HAL_GetState(void)

参数: 无功能: 获取HAL状态

10.2 低功耗模式

HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry)

参数:

Regulator: 稳压器模式SLEEPEntry: 进入模式(SLEEP_NOW或SLEEP_ON_EXIT) 功能: 进入睡眠模式 HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry)

参数: 类似睡眠模式功能: 进入停止模式 HAL_PWR_EnterSTANDBYMode(void)

参数: 无功能: 进入待机模式

二、简洁表格版

1. 通用功能

函数参数功能HAL_Init()无初始化HAL库HAL_Delay(ms)ms: 毫秒数毫秒级延时HAL_GetTick()无获取系统tick计数

2. GPIO

函数参数功能HAL_GPIO_Init()GPIOx, GPIO_Init初始化GPIOHAL_GPIO_WritePin()GPIOx, Pin, State写GPIO状态HAL_GPIO_ReadPin()GPIOx, Pin读GPIO状态HAL_GPIO_TogglePin()GPIOx, Pin翻转GPIO状态

3. USART/UART

函数参数功能HAL_UART_Init()huart初始化UARTHAL_UART_Transmit()huart, pData, Size, Timeout阻塞发送HAL_UART_Receive()huart, pData, Size, Timeout阻塞接收HAL_UART_Transmit_IT()huart, pData, Size中断发送HAL_UART_Receive_IT()huart, pData, Size中断接收

4. SPI

函数参数功能HAL_SPI_Init()hspi初始化SPIHAL_SPI_Transmit()hspi, pData, Size, Timeout阻塞发送HAL_SPI_Receive()hspi, pData, Size, Timeout阻塞接收HAL_SPI_TransmitReceive()hspi, pTx, pRx, Size, Timeout全双工收发

5. I2C

函数参数功能HAL_I2C_Init()hi2c初始化I2CHAL_I2C_Master_Transmit()hi2c, DevAddr, pData, Size, Timeout主模式发送HAL_I2C_Master_Receive()hi2c, DevAddr, pData, Size, Timeout主模式接收HAL_I2C_Mem_Write()hi2c, DevAddr, MemAddr, MemAddSize, pData, Size, Timeout写设备内存

6. ADC

函数参数功能HAL_ADC_Init()hadc初始化ADCHAL_ADC_Start()hadc启动ADC转换HAL_ADC_PollForConversion()hadc, Timeout等待转换完成HAL_ADC_GetValue()hadc获取转换结果

7. TIM定时器

函数参数功能HAL_TIM_Base_Init()htim初始化基本定时器HAL_TIM_PWM_Init()htim初始化PWMHAL_TIM_PWM_Start()htim, Channel启动PWM输出HAL_TIM_IC_Init()htim初始化输入捕获

8. DMA

函数参数功能HAL_DMA_Init()hdma初始化DMAHAL_DMA_Start()hdma, SrcAddr, DstAddr, DataLength启动DMA传输HAL_DMA_Abort()hdma中止DMA传输

9. 中断管理

函数参数功能HAL_NVIC_SetPriority()IRQn, PreemptPrio, SubPrio设置中断优先级HAL_NVIC_EnableIRQ()IRQn使能中断HAL_NVIC_DisableIRQ()IRQn禁用中断

10. 回调函数

函数触发条件HAL_UART_TxCpltCallback()UART发送完成HAL_SPI_TxCpltCallback()SPI发送完成HAL_I2C_MasterTxCpltCallback()I2C主发送完成HAL_ADC_ConvCpltCallback()ADC转换完成HAL_TIM_PeriodElapsedCallback()定时器周期完成

声明: 本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!