|
最近学C语言 回调函数可以理解为 先注册地址 再等待触发 触发之后调用这个函数 这个称为回调函数 在STM32中 裸机情况下 回调函数就是中断服务函数ISR 只有硬件触发这一种触发情况 而钩子函数是等待某个函数运行到一定阶段后进行调用 由这个钩子函数的定义来看 HAL库里的回调函数反而是钩子函数 常规情况下 HAL库的回调函数都是在中断服务函数的结束部分进行的 他的运行阶段固定 不知道这里是否是翻译错误 用AI总结一下我的想法 回调函数本质是“注册-触发-调用”机制。在STM32裸机环境下,回调函数通过函数指针实现运行时动态绑定,其唯一触发源是硬件中断。当硬件事件发生时,CPU跳转至中断服务函数(ISR),在ISR的尾部(即清除标志位之后、中断返回之前)调用已注册的回调函数——此时仍处于中断上下文,因此回调函数中不能执行阻塞操作。回调的核心特征是运行时可切换 :同一个中断源可以通过修改函数指针指向,动态绑定不同的处理逻辑。 钩子函数则完全不同。在STM32 HAL库中,钩子通过 最容易混淆的地方来了: HAL库中所有带 |
STM32 上同时跑 LWIP 的 TCP 与 UDP 连接
在擦除flash时 同时挂起中断 是否会造成卡死以及相关的卡死机制
FLASH擦除轮询等待时CPU真的会轮询吗
HAL_I2C_Mem_Read 一直返回 BUSY
使用 HAL 库通过串口以 ASCII 形式发送整型数据
STM32F103C8T6 上电后无法通过串口发出数据的问题?
USB Host 外部中断按键失效
调用HAL_FLASH_OB_Unlock()直接进入 HardFaultHandler
STM32 增加 WiFi + 以太网的低成本方案
KEILMDK每次都要手动选Reset and Run吗 不然下载到板子上得重启电源才行 求解答
微信公众号
手机版