STM32通过代码分析Callback回调函数的调用

作者:可乐鸡翅好好吃日期:2026/3/5

问题:我调用了 HAL_UART_Transmit_IT() 或 HAL_UART_Receive_IT(),这里面使能了中断,且中断回调函数被调用了,代码里完全看不到 HAL_UART_TxCpltCallback() 或 HAL_UART_RxCpltCallback() 被调用,为什么回调函数还是能执行?
真相是:回调函数确实被调用了,但被 HAL 库“藏”得很深,藏在了中断处理函数的子函数里

以下通过串口中断发送来查看回调函数的调用:

一、解释串口两种发送模式

首先解释一下两种发送模式,一种HAL_UART_Transmit,一种HAL_UART_Transmit_IT。

普通发送(阻塞模式)HAL_UART_Transmit(&huart1, data, size, timeout);
CPU全程等待:发送过程中CPU一直占用,直到数据发完或超时
简单直接:代码执行到这里就停住,发完才继续往下走
适合:发送少量数据,对实时性要求不高的场合

IT模式(中断模式)HAL_UART_Transmit_IT(&huart1, data, size);
CPU不等待:启动发送后立即返回,CPU可以继续做其他事
后台发送:数据在后台通过中断逐个字节发送
发送完成通知:发送完毕后会调用回调函数 HAL_UART_TxCpltCallback()
适合:发送大量数据,或需要CPU同时处理其他任务的场合

二、通过使用(中断模式)串口发送查看回调函数

在main函数中,我使用HAL_UART_Transmit_IT()来发生数据。

进入HAL_UART_Transmit_IT(),我们看到通过 __HAL_UART_ENABLE_IT(huart, UART_IT_TXE);使能硬件中断


STM32通过代码分析Callback回调函数的调用》 是转载文章,点击查看原文


相关推荐


【转载】Cowork and plugins for teams across the enterprise
是魔丸啊2026/2/25

转载 btw,文中提到的pluings,官方都有github仓库: github.com/anthropics/… github.com/anthropics/… 管理员现在可以创建私有插件市场,对 plugins、connectors 和 skills 进行更好的控制。我们还为更多部门添加了新的 plugins 和 connectors。 今天,我们推出了 Cowork 和 plugins 的更新,帮助 enterprises 根据工作方式定制 Claude。Plugins 将 Cla


CSDN AI社区镜像创作者征集计划正式启动,参与即可获得奖励哦~
CSDN官方博客2026/2/17

CSDN AI 社区是聚焦 AI 技术产业落地的开发者服务平台(官方入口),核心为创作者搭建技术价值转化桥梁,AI社区涵盖四大核心模块:算力市场、模型广场、社区镜像、Agent市场。 社区镜像是CSDN AI社区为开发者提供的核心技术分享与变现载体,可理解为封装了特定AI开发环境、模型或项目的标准化资源包,核心特点与价值如下: 1. 内容核心:包含完整依赖库、框架配置(如TensorFlow/PyTorch)、模型权重、推理代码等,解决环境适配、部署繁琐问题; 2. 使用价值:用户可直


hCaptcha 验证码图像识别 API 对接教程
崔庆才丨静觅2026/2/8

本文将介绍一种 hCaptcha 图像识别 API 对接说明,它可以通过用户输入识别的内容和 hCaptcha验证码图像,最后返回需要点击的小图像的坐标,完成验证。 申请流程 要使用 API,需要先到 hCaptcha 图像识别 API platform.acedata.cloud/documents/c… 对应页面申请对应的服务,进入页面之后,点击「Acquire」按钮,如图所示: 如果你尚未登录或注册,会自动跳转到登录页面邀请您来注册和登录,登录注册之后会自动返回当前页面。 在首次申请时会


SwiftUI 光晕动画性能优化:消除托盘缩放卡顿的实战方案
zhyongrui2026/1/30

文章目录 SnipTrip 简介问题现象问题根源分析1. 多层离屏渲染2. 动态参数每帧变化3. 多个光晕组件同时渲染4. 动画与光晕竞争 GPU 资源 解决方案Plan A: 在托盘动画期间暂停光晕 ✅ (已实施)设计思路实现细节实施效果技术细节说明 备选方案Plan B: 使用 drawingGroup() 进行光晕栅格化设计思路实现方式优缺点分析 Plan C: 优化贴纸按压动画时序设计思路实现方式优缺点分析 Plan D: 降低光晕刷新率设计思路实现


【Linux 系统开发】基础开发工具详解:软件包管理器、编辑器。编译器开发实战
纵有疾風起2026/1/21

目录 引言 一. 软件包管理器 1.1 什么是软件包 1.2 Linux软件生态 1.3 如何使用yum/apt 1.4 安装源 二. 编辑器Vim 2.1 Linux编辑器-vim 2.2 vim的基本概念 2.3 vim的基本操作 2.4 vim命令模式命令集 1)进入插入模式: 2)从插入模式切换为命令模式 : 3)移动光标 : 4)删除文字: 4)复制: 5)替换: 6)撤销上一次操作: 7)更改 : 8)跳至指定的行: 总结并拓展: 2.5


React Native for Harmony:订单列表页面状态筛选完整实现
lili-felicity2026/1/13

目录 核心知识点:订单列表状态筛选 完整核心用法 1.1 核心内置 API/Hook/组件 介绍实战开发:双版本完整实现 2.1 版本一:基础极简版 - 订单状态单选筛选OpenHarmony6.0+ TS环境专属避坑指南扩展用法:订单筛选高频进阶技巧 一、核心知识点:订单列表状态筛选 完整核心用法 1、核心内置 API/Hook/组件 介绍 本次实现的订单列表「状态筛选」功能,全程基于React Native原生核心能力开发、无任何第三方依赖、无鸿蒙原生桥接代码,所有能力完美适配鸿蒙端,且在T


CISP-PTE 日志分析1
mooyuan天天2026/1/5

目录 一、渗透准备 1、打开靶场 2、开始答题 3、分析日志 (1)基于ip地址分析 (2)基于响应值200分析 二、暴力破解 1、firefox打开adminlogin.php页面 2、bp inception设置为on 3、输入用户名密码登录 4、bp抓包发送到intruder 5、配置intruder的positon 6、配置intruder的payload并开启攻击 7、分析攻击结果 8、正确密码登录 本文详细讲解CTF-PTE靶场日志分析关卡的渗透实


从“单机”到“分布式”到“集群”,服务经历了什么?
哈里谢顿2025/12/27

【万字长文·图解】 从“单机”到“分布式”到“集群”——一次讲透两者的区别、联系、落地场景与常见架构 一、先放一张脑图 单机(one box)────┬──> 集群(Cluster):多台机器干**同一件事**(横向复制) └──> 分布式(Distributed):多台机器干**不同的事**(横向拆分) 关键词 集群 = 人多力量大(量) 分布式 = 专人干专事(分工) 现实中往往“分布式 + 集群”混合出现(既拆分又复制) 二、集群(Cluster)


谷歌的大反击:Gemini 3 Flash 让“快”和“聪明”终于握手言和
墨风如雪2025/12/18

还记得以前我们怎么挑选大模型吗?我们要么忍受旗舰模型“老牛拉破车”般的推理速度,只为求一个靠谱的答案;要么为了秒回的快感,去忍受轻量级模型偶尔的“胡言乱语”。 在这个2025年的尾巴,谷歌似乎终于要把这道选择题撕掉了。 12月17日,Gemini 3 Flash 正式上线。如果不看发布会,光看名字,你可能会以为这又是一个为了省钱而不得不做出的妥协版。但上手实测并扒开数据一看,这次的情况有点不一样。谷歌不想让你把它当备胎,而是想让它成为你每天都在用的主力。 速度不再是智商的敌人 让我们先聊聊最直


Labview 与欧姆龙 PLC 的 Ethernetip TCP 网口通讯:CIP 通讯的魅力
qq 8762239652025/12/10

Labview Ethernetip TCP网口通讯欧姆龙PLC OmronNX1P2NJ501NJ301PLC标签通讯 CIP通讯比Fins通讯更完美。 1.自定义变量读写 2.支持 Bool单点或数组读写 3支持数字格式单个或者数组读写 4支持浮点数单个或者数组读写 程序经过测试准确运行从此远离%转换成Fins. 在自动化控制领域,Labview 与欧姆龙 PLC 的通讯是很多工程师会面临的课题。今天咱就唠唠 Labview 通过 Ethernetip TCP 网口和欧姆龙 NX1P2

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客