请问__HAL_LOCK()这个函数有什么用?

2019-07-14 14:14发布

比如串口,串口类型UART_HandleTypeDef的定义有Lock这个变量,其类型是下面这个枚举。
typedef enum
{
  HAL_UNLOCKED = 0x00,
  HAL_LOCKED   = 0x01  
} HAL_LockTypeDef;

串口接收/发送,或者中断模式接收/发送,都是先设置__HAL_LOCK(),然后配置huart,配置完后再__HAL_UNLOCK()。但感觉这个Lock没什么用啊。
接受过程中及中断里都没有涉及到这个变量,也许是我没找到。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
谦谦三君子
2019-07-14 21:18
之所以这么问,是之前看到creep大神给的DMA+空闲中断里的空闲回调函数里有个
__HAL_UNLOCK(huart->hdmarx);
之前一直不明白为什么这里有个UNLOCK,而没有找到对应的LOCK。今天修改这部分时,没有加这句,结果接收数组一直是第一次接收的数据。现在想想,应该是后来DMA就没有再使能。
但我没找到根据Lock位做判断的地方。

一周热门 更多>