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

HAL库常用函数

一、通用函数

  • 系统初始化:

HAL_Init(): 初始化HAL库和系统时钟(调用前需配置系统时钟源)。
HAL_Delay(uint32_t Delay): 毫秒级阻塞延时(基于SysTick定时器)。
HAL_GetTick(): 获取系统运行时间(毫秒计数器)。

  • 中断管理:

HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority): 设置中断优先级。
HAL_NVIC_EnableIRQ(IRQn_Type IRQn): 使能指定中断。
HAL_NVIC_DisableIRQ(IRQn_Type IRQn): 禁用指定中断。

二、GPIO控制

  • 基本操作:

HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init): 初始化GPIO引脚模式(输入/输出/复用等)。
HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState): 设置引脚电平(高/低)。
HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin): 读取引脚电平。
HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin): 翻转引脚电平。

  • 中断相关:

HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin): EXTI中断服务函数中调用,处理引脚中断事件。
HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin): 用户需重写的EXTI中断回调函数。

三、 定时器(TIM)

  • 基础模式:

HAL_TIM_Base_Init(TIM_HandleTypeDef *htim): 初始化定时器基本模式。
HAL_TIM_Base_Start(TIM_HandleTypeDef *htim): 启动定时器(无中断)。
HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim): 启动定时器并开启中断。

  • PWM模式:

HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel): 启动PWM输出。
HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel): 停止PWM输出。
__HAL_TIM_SET_COMPARE(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Compare): 动态修改PWM占空比。

  • 中断回调:

HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim): 定时器溢出中断回调函数(需用户实现)。

四、 串口通信(UART)

  • 阻塞模式:

HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t 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): 中断发送数据。
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size): 中断接收数据。

  • DMA模式:

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接收数据。

  • 回调函数:

HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart): 发送完成回调函数。
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart): 接收完成回调函数。

五、ADC模数转换

  • 单次转换:

HAL_ADC_Start(ADC_HandleTypeDef *hadc): 启动ADC转换。
HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout): 等待转换完成。
HAL_ADC_GetValue(ADC_HandleTypeDef *hadc): 获取转换结果。

  • 连续扫描模式:

HAL_ADC_Start_IT(ADC_HandleTypeDef *hadc): 启动ADC连续转换(中断模式)。
HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc): 转换完成回调函数。

六、DMA直接内存访问

  • 数据传输:

HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength): 启动DMA传输。
HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t Timeout): 阻塞等待DMA完成。

  • 回调函数:

HAL_DMA_TransferCpltCallback(DMA_HandleTypeDef *hdma): DMA传输完成回调函数。

七、I2C通信

  • 主模式操作:

HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout): 主设备发送数据。
HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout): 主设备接收数据。

  • 中断/DMA模式:

HAL_I2C_Master_Transmit_IT() / HAL_I2C_Master_Transmit_DMA(): 中断或DMA发送。
HAL_I2C_Master_Receive_IT() / HAL_I2C_Master_Receive_DMA(): 中断或DMA接收。

八、SPI通信

  • 主从通信:

HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout): 阻塞发送数据。
HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout): 阻塞接收数据。
HAL_SPI_TransmitReceive(): 同时发送和接收数据。

  • 中断/DMA模式:

HAL_SPI_Transmit_IT() / HAL_SPI_Transmit_DMA(): 中断或DMA发送。

九、 系统时钟(RCC)

  • 时钟配置:
    HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency): 配置系统时钟源和分频。
    HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct): 配置振荡器(HSE/HSI/PLL等)。

十、 看门狗(WWDG/IWDG)

  • 独立看门狗(IWDG):
    HAL_IWDG_Start(IWDG_HandleTypeDef *hiwdg): 启动看门狗。
    HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg): 喂狗操作。

相关文章:

  • (枚举专题)排列数枚举
  • C语言零基础入门教程(1)
  • LM Studio 替换源的方式解决huggingface.co无法访问的问题
  • 动态规划填表技巧:固定最后一个数 vs 固定倒数第二个数
  • 6、通过husky规范commit提交信息
  • 多视图几何--结构恢复--三角测量
  • A523 527 pk口控制
  • Linux密码策略
  • 华为OD机试九日集训第1期 - 按算法分类,由易到难,循序渐进,提升编程能力和解题技巧,从而提高机试通过率(Python/JS/C/C++)
  • QQuick3D-Camera的介绍
  • TCP/IP原理详细解析
  • JavaScript 中 this 绑定丢失的陷阱:从 “is not a function“ 错误谈起
  • 处理动态分页:自动翻页与增量数据抓取策略-数据议事厅
  • 网络tcp协议设置,网络tcp协议设置不了
  • Linux笔记之通配符和正则表达式的区别
  • 领星ERP-FBA数据无缝对接用友U8系统的技术实践
  • 目标检测YOLO实战应用案例100讲-基于激光雷达点云的交通场景 三维车辆目标检测与跟踪算法研究(续)
  • windows本地AI知识库解决方案( pageassist + nomic + deepseek-r1:1.5b)
  • 改变 input 自动填充的背景颜色
  • Midjourney绘图参数详解:从基础到高级的全面指南
  • 地方房地产网站seo实战案例分享/seo推广怎么学
  • 网站开发工资/成都排名推广
  • 视频播放网站建设/搜狗搜索推广
  • 免费电子商务网站源码/常德政府网站市民留言
  • 做个网站需要多久网站设计费用多少/谷歌paypal下载
  • 外贸网站流量/网站免费网站免费