当前位置: 首页 > news >正文

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句柄
      • 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()定时器周期完成

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


http://www.lryc.cn/news/580412.html

相关文章:

  • HuggingFists: 无代码处理复杂PDF
  • Debian、Buildroot 和 Ubuntu 都是基于 Linux 的系统区别
  • 在VMware虚拟机中安装Windows 98时,Explorer提示“该程序执行了非法操作,即将关闭”的解决办法
  • 若 VSCode 添加到文件夹内右键菜单中显示(通过reg文件方式)
  • linux系统源代码安装apache、编译隐藏版本号
  • ubuntu手动编译VTK9.3 Generating qmltypes file 失败
  • Cursor/VScode ,点击运行按钮,就打开新的终端,如何设置为在当前终端运行文件而不是重新打开终端----一招搞定篇
  • 高频交易服务器篇
  • Redis服务器
  • 【Elasticsearch】检索高亮
  • 【网络与爬虫 13】智能伪装:Scrapy-Fake-UserAgent反检测技术实战指南
  • Matplotlib 安装部署与版本兼容问题解决方案(pyCharm)
  • Vue.js TDD开发深度指南:工具链配置与精细化测试策略
  • Linux(centos)安装 MySQL 8
  • ADAS功能介绍
  • alpine安装及配置nodejs开发测试环境
  • 流水线(Jenkins)打包拉取依赖的时候提示无法拉取,需要登录私仓的解决办法
  • Swift 数学计算:用 Accelerate 框架让性能“加速吃鸡”
  • Vue前端项目接收webSocket信息
  • ASP.NET 安装使用教程
  • CppCon 2018 学习:THE BITS BETWEEN THE BITS HOW WE GET TO HOW WE GET TO main()
  • 3dmax标准材质转物理材质插件,支持VR材质和CR材质转换成功物理材质,支持多维子材质
  • Python asyncio库与GIL之间的关系,是否能够解决核心问题?
  • 【鸿蒙】鸿蒙操作系统发展综述
  • Redis 哨兵模式部署--docker版本
  • 个人独创-CV领域快速测试缝合模型实战框架讲解-基础篇-Pytorch必学知识
  • STM32中实现shell控制台(命令解析实现)
  • PyTorch中 item()、tolist()使用详解和实战示例
  • 如何修改Siteground max_execution_time值?
  • 打印界智能助手Print Distributor:日志记录 纸张状态实时看,异常情况秒通知