当前位置: 首页 > 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): 喂狗操作。

相关文章:

HAL库常用函数

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

【Zinx】Day5-Part3:Zinx 的连接管理

目录 Day5-Part3:Zinx 的连接管理创建连接管理模块将连接管理模块集成到 Zinx 当中将 ConnManager 集成到 Server 当中在 Connection 的工厂函数中将连接添加到 ConnManagerServer 中连接数量的判断连接的删除 补充:连接的带缓冲发包方式补充&#xff1a…...

C语言:6.20字符型数据练习题

编写程序,输人一行数字字符(用回车结束),每个数字字符 的前后都有空格。 把这一行中的数字转换成一个整数。 例如,若输入(<CR>代表 Enter键):2 4 8 3<CR>则输出 整数:2483。 #include <stdio.h>int main() {char ch;int number 0;printf("请输入一行…...

SpringBoot Test详解

目录 spring-boot-starter-test 1、概述2、常用注解 2.1、配置类型的注解2.2、Mock类型的注解2.3、自动配置类型的注解2.4、启动测试类型的注解2.5、相似注解的区别和联系 3、SpringBootTest和Junit的使用 3.1、单元测试3.2、集成测试 4、MockMvc 4.1、简单示例4.2、自动配置4…...

CDefView::_GetPIDL函数分析之ListView_GetItem函数的参数item的item.mask 为LVIF_PARAM

CDefView::_GetPIDL函数分析之ListView_GetItem函数的参数item的item.mask 为LVIF_PARAM 第一部分&#xff1a; 1: kd> t SHELL32!CDefView::_GetPIDL: 001b:77308013 55 push ebp 1: kd> dv this 0x00000015 i 0n21 …...

Android Retrofit 框架注解定义与解析模块深度剖析(一)

一、引言 在现代 Android 和 Java 开发中&#xff0c;网络请求是不可或缺的一部分。Retrofit 作为 Square 公司开源的一款强大的类型安全的 HTTP 客户端&#xff0c;凭借其简洁易用的 API 和高效的性能&#xff0c;在开发者社区中广受欢迎。Retrofit 的核心特性之一便是通过注…...

项目上传到Gitee过程

在gitee上新建一个仓库 点击“克隆/下载”获取仓库地址 电脑上要装好git 在电脑本地文件夹右键“Git Bash Here” 依次执行如下命令 git init git remote add origin https://gitee.com/qlexcel/stm32-simple.git git pull origin master git add . git commit -m ‘init’…...

DeepSeek R1在医学领域的应用与技术分析(Discuss V1版)

DeepSeek R1作为一款高性能、低成本的国产开源大模型,正在深刻重塑医学软件工程的开发逻辑与应用场景。其技术特性,如混合专家架构(MoE)和参数高效微调(PEFT),与医疗行业的实际需求紧密结合,推动医疗AI从“技术驱动”向“场景驱动”转型。以下从具体业务领域需求出发,…...

数学之快速幂-数的幂次

题目描述 给定三个正整数 N,M,P&#xff0c;求 输入描述 第 1 行为一个整数 T&#xff0c;表示测试数据数量。 接下来的 T 行每行包含三个正整数 N,M,P。 输出描述 输出共 T 行&#xff0c;每行包含一个整数&#xff0c;表示答案。 输入输出样例 示例 1 输入 3 2 3 7 4…...

git subtree管理的仓库怎么删除子仓库

要删除通过 git subtree 管理的子仓库&#xff0c;可以按照以下步骤操作&#xff1a; 1. 确认子仓库路径 首先确认要删除的子仓库的路径&#xff0c;假设子仓库路径为 <subtree-path>。 2. 从主仓库中移除子仓库目录 使用 git rm 命令删除子仓库的目录&#xff1a; …...

学习资料电子版 免费下载的网盘网站(非常全!)

我分享一个私人收藏的电子书免费下载的网盘网站&#xff08;学习资料为主&#xff09;&#xff1a; link3.cc/sbook123 所有资料都保存在网盘了&#xff0c;直接转存即可&#xff0c;非常的便利&#xff01; 包括了少儿&#xff0c;小学&#xff0c;初中&#xff0c;中职&am…...

SpringMVC-全局异常处理

文章目录 1. 全局异常处理2. 项目异常处理方案2.1 异常分类2.2 异常解决方案2.3 异常解决方案具体实现 1. 全局异常处理 问题&#xff1a;当我们在SpingMVC代码中没有对异常进行处理时&#xff0c;三层架构的默认处理异常方案是将异常抛给上级调用者。也就是说Mapper层报错会将…...

基于Spring Boot的宠物健康顾问系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

【Linux内核系列】:深入理解缓冲区

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz ★★★ 本文前置知识&#xff1a; 文件系统以及相关系统调用接口 输入以及输出重定向 那么在此前的学习中&#xff0c;我们了解了文件的概念以及相关的系统调用接口&#xff0c;并…...

Python开发Scikit-learn面试题及参考答案

目录 如何用 SimpleImputer 处理数据集中的缺失值? 使用 StandardScaler 对数据进行标准化的原理是什么?与 MinMaxScaler 有何区别? 如何用 OneHotEncoder 对类别型特征进行编码? 解释特征选择中 SelectKBest 与 VarianceThreshold 的应用场景。 如何通过 PolynomialFe…...

~(取反)在算法竞赛中的常见用法和注意事项

在算法竞赛中&#xff0c;取反符号 ~ 主要用于按位取反操作&#xff0c;其功能是对整数的二进制表示逐位取反&#xff08;0 变 1&#xff0c;1 变 0&#xff09;。以下是 ~ 在算法竞赛中的常见用法和注意事项&#xff1a; 1. 按位取反的基本用法 ~ 对整数的二进制表示进行取反…...

C++ MySQL 常用接口(基于 MySQL Connector/C++)

C MySQL 常用接口&#xff08;基于 MySQL Connector/C&#xff09; 1. 数据库连接 接口&#xff1a; sql::mysql::MySQL_Driver *driver; sql::Connection *con;作用&#xff1a; 用于创建 MySQL 连接对象。 示例&#xff1a; driver sql::mysql::get_mysql_driver_insta…...

本地部署 OpenManus 保姆级教程(Windows 版)

一、环境搭建 我的电脑是Windows 10版本&#xff0c;其他的没尝试&#xff0c;如果大家系统和我的不一致&#xff0c;请自行判断&#xff0c;基本上没什么大的出入啊。 openManus的Git地址&#xff1a;https://github.com/mannaandpoem/OpenManus 根据官网的两种安装推荐方式如…...

【Pandas】pandas Series compare

# Pandas2.2 Series ## Computations descriptive stats |方法|描述| |-|:-------| |Series.compare(other[, align_axis, ...])|用于比较两个 Series| ### pandas.Series.compare pandas.Series.compare 方法用于比较两个 Series&#xff0c;并返回一个包含差异的 DataFram…...

基于DeepSeek的智慧医药系统(源码+部署教程)

运行环境 智慧医药系统运行环境如下&#xff1a; 前端&#xff1a; HTMLCSS后端&#xff1a;Java AIGCDeepseekIDE工具&#xff1a;IDEA技术栈&#xff1a;Springboot HTMLCSS MySQL 主要角色 智慧医药系统主要分为两个角色。 游客 尚未进行注册和登录。具备登录注册、…...

嵌入式系统中SipHash轻量级哈希实现与优化

1. SipHash 嵌入式底层实现技术解析SipHash 是一种基于加法-循环-异或&#xff08;Add-Rotate-Xor, ARX&#xff09;结构的伪随机函数族&#xff0c;专为短输入消息设计&#xff0c;在嵌入式系统中广泛用于哈希表键值保护、拒绝服务&#xff08;DoS&#xff09;防护、安全计数器…...

告别笨重电感!用这颗TI的TPS60503电荷泵芯片,给你的便携设备做个高效小体积电源

无电感电源革命&#xff1a;TPS60503电荷泵在便携设备中的极致能效设计 当智能手表在清晨用震动唤醒你&#xff0c;当无线耳机在通勤路上播放音乐&#xff0c;这些贴身电子设备背后都藏着一个关键矛盾——如何在指甲盖大小的空间里实现高效供电&#xff1f;传统电感式DCDC转换器…...

YOLOv8特征可视化实战:如何用3种合并模式优化模型调试(附完整代码)

YOLOv8特征可视化实战&#xff1a;3种合并模式优化模型调试的工程实践 在计算机视觉领域&#xff0c;理解神经网络内部工作机制一直是提升模型性能的关键。YOLOv8作为当前最先进的实时目标检测框架之一&#xff0c;其内部特征层的可视化分析能够为模型调试提供直观依据。然而&a…...

泛微E8流程管理进阶:从数据库角度理解流程状态与节点关系

泛微E8流程管理进阶&#xff1a;从数据库角度理解流程状态与节点关系 在企业的数字化转型浪潮中&#xff0c;流程管理系统扮演着越来越重要的角色。作为国内领先的协同办公平台&#xff0c;泛微E8凭借其强大的流程引擎和灵活的定制能力&#xff0c;成为众多企业的首选。然而&am…...

手把手调参:BLDC有感启动的PWM占空比怎么给?从零到平滑启动的实战避坑指南

手把手调参&#xff1a;BLDC有感启动的PWM占空比实战指南 电机启动瞬间的电流冲击声像极了新手司机的"熄火"与"窜车"——要么纹丝不动&#xff0c;要么突然暴冲。这种尴尬在BLDC电机调试中尤为常见&#xff0c;特别是当负载特性未知时&#xff0c;如何设定…...

深入解析Infineon BTS54040-LBF高边芯片的SPI控制与汽车电子应用

1. BTS54040-LBF高边芯片的核心特性解析 第一次接触英飞凌的BTS54040-LBF时&#xff0c;我正负责一个汽车氛围灯控制项目。这块指甲盖大小的芯片让我印象深刻——它把四路高边开关、SPI控制和完善的保护机制集成在单个封装里。先说说最关键的几个特性&#xff1a; 四通道智能开…...

解决跨平台资源下载难题:res-downloader高效资源获取工具全解析

解决跨平台资源下载难题&#xff1a;res-downloader高效资源获取工具全解析 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gi…...

QT:Tab Widget的进阶应用与实战技巧

1. Tab Widget的动态管理技巧 第一次用QT做带标签页的界面时&#xff0c;我习惯在设计器里把Tab页都固定好。直到接手一个需要动态加载配置文件的仪表盘项目&#xff0c;才发现动态增删Tab才是真实开发中的常态。比如用户点击"新建图表"按钮时&#xff0c;我们需要实…...

终极指南:如何使用gosu实现容器运行时权限管理的标准化方案

终极指南&#xff1a;如何使用gosu实现容器运行时权限管理的标准化方案 【免费下载链接】gosu Simple Go-based setuidsetgidsetgroupsexec 项目地址: https://gitcode.com/gh_mirrors/go/gosu 在容器化应用的世界里&#xff0c;权限管理是确保安全性和稳定性的关键环节…...

cv_unet_image-colorization模型监控:推理延迟与成功率实时看板

cv_unet_image-colorization模型监控&#xff1a;推理延迟与成功率实时看板 1. 项目背景与监控需求 在实际的图像上色应用场景中&#xff0c;用户不仅关心最终的上色效果&#xff0c;更需要了解模型的运行状态和性能表现。特别是对于需要批量处理历史照片的用户来说&#xff…...