提示:以下是本篇文章正文内容,下面案例可供参考
一、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句柄,也就是&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)
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)
- 参数:
- 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 中断和回调
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() |
定时器周期完成 |
声明:
本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!