[STM32F4] 关于 __HAL_LOCK 锁机制的疑问

[复制链接]
109|61
lllook 发表于 2026-7-26 09:10 | 显示全部楼层
锁在中断环境下限制了同时收发,应考虑优化中断处理或锁的机制。
香水城 发表于 2026-7-29 17:25 | 显示全部楼层
__HAL_LOCK/__HAL_UNLOCK 的设计目的是在 HAL 驱动内部做一个轻量级的句柄级防重入保护,避免同一个外设句柄在一次操作尚未完成时又被重复进入或交叉修改,从而破坏 handle 中的状态、缓冲区指针和传输计数等上下文信息。它本质上更像一个“忙标志”,而不是真正意义上的互斥锁。它的优点是实现简单、开销小、适合裸机环境,但缺陷也很明显:加锁过程不是原子操作,既不中断安全,也不能保证 RTOS 多任务下的线程安全任何路径都可以解锁;同时它通常只保护启动过程中的短暂代码段。因此,这套机制只能用于 HAL 内部的基础性防误用保护,不能替代真正的临界区、互斥锁或系统级并发控制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0