|
__HAL_LOCK/__HAL_UNLOCK 的设计目的是在 HAL 驱动内部做一个轻量级的句柄级防重入保护,避免同一个外设句柄在一次操作尚未完成时又被重复进入或交叉修改,从而破坏 handle 中的状态、缓冲区指针和传输计数等上下文信息。它本质上更像一个“忙标志”,而不是真正意义上的互斥锁。它的优点是实现简单、开销小、适合裸机环境,但缺陷也很明显:加锁过程不是原子操作,既不中断安全,也不能保证 RTOS 多任务下的线程安全任何路径都可以解锁;同时它通常只保护启动过程中的短暂代码段。因此,这套机制只能用于 HAL 内部的基础性防误用保护,不能替代真正的临界区、互斥锁或系统级并发控制。
|