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. GPIO
- 3. USART/UART
- 4. SPI
- 5. I2C
- 6. ADC
- 7. TIM定时器
- 8. DMA
- 9. 中断管理
- 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,&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_Delay(ms)
HAL_GetTick()
2. GPIO
HAL_GPIO_Init()
HAL_GPIO_WritePin()
HAL_GPIO_ReadPin()
HAL_GPIO_TogglePin()
3. USART/UART
HAL_UART_Init()
HAL_UART_Transmit()
HAL_UART_Receive()
HAL_UART_Transmit_IT()
HAL_UART_Receive_IT()
4. SPI
HAL_SPI_Init()
HAL_SPI_Transmit()
HAL_SPI_Receive()
HAL_SPI_TransmitReceive()
5. I2C
HAL_I2C_Init()
HAL_I2C_Master_Transmit()
HAL_I2C_Master_Receive()
HAL_I2C_Mem_Write()
6. ADC
HAL_ADC_Init()
HAL_ADC_Start()
HAL_ADC_PollForConversion()
HAL_ADC_GetValue()
7. TIM定时器
HAL_TIM_Base_Init()
HAL_TIM_PWM_Init()
HAL_TIM_PWM_Start()
HAL_TIM_IC_Init()
8. DMA
HAL_DMA_Init()
HAL_DMA_Start()
HAL_DMA_Abort()
9. 中断管理
HAL_NVIC_SetPriority()
HAL_NVIC_EnableIRQ()
HAL_NVIC_DisableIRQ()
10. 回调函数
HAL_UART_TxCpltCallback()
HAL_SPI_TxCpltCallback()
HAL_I2C_MasterTxCpltCallback()
HAL_ADC_ConvCpltCallback()
HAL_TIM_PeriodElapsedCallback()
声明:
本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!