STM32HAL库总结

发布于:2025-07-10 ⋅ 阅读:(20) ⋅ 点赞:(0)


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

一、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,&huart3
      • pData: 发送数据指
      • 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 初始化GPIO
HAL_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 初始化UART
HAL_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 初始化SPI
HAL_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 初始化I2C
HAL_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 初始化ADC
HAL_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 初始化PWM
HAL_TIM_PWM_Start() htim, Channel 启动PWM输出
HAL_TIM_IC_Init() htim 初始化输入捕获

8. DMA

函数 参数 功能
HAL_DMA_Init() hdma 初始化DMA
HAL_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() 定时器周期完成

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



网站公告

今日签到

点亮在社区的每一天
去签到