STM32HAL库总结
- 一、HAL库常用函数分类总结
- 1. 通用功能函数
-
- 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. 中断处理
-
- 10. 其他实用函数
-
- 二、简洁表格版
- 1. 通用功能
- 2. GPIO
- 3. USART/UART
- 4. SPI
- 5. I2C
- 6. ADC
- 7. TIM定时器
- 8. DMA
- 9. 中断管理
- 10. 回调函数
提示:以下是本篇文章正文内容,下面案例可供参考
一、HAL库常用函数分类总结
1. 通用功能函数
1.1 系统初始化
1.2 延时函数
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 中断处理
3. USART/UART函数
3.1 初始化和配置
3.2 数据收发
-
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
- 参数:
- huart: UART句柄
- 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)
-
HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
3.3 回调函数
4. SPI函数
4.1 初始化和配置
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()
4.3 回调函数
HAL_SPI_TxCpltCallback()
/HAL_SPI_RxCpltCallback()
/HAL_SPI_TxRxCpltCallback()
5. I2C函数
5.1 初始化和配置
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)
-
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 中断和回调
8. DMA函数
8.1 初始化和配置
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 回调函数
9. 中断处理
9.1 通用中断处理
-
HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
- 参数:
- IRQn: 中断号
- PreemptPriority: 抢占优先级
- SubPriority: 子优先级
- 功能: 设置中断优先级
-
HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
-
HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
10. 其他实用函数
10.1 状态和错误处理
-
HAL_GetError(void)
-
HAL_GetState(void)
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() | 定时器周期完成 |
声明:
本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!