比如串口,串口类型UART_HandleTypeDef的定义有Lock这个变量,其类型是下面这个枚举。
typedef enum
{
HAL_UNLOCKED = 0x00,
HAL_LOCKED = 0x01
} HAL_LockTypeDef;
串口接收/发送,或者中断模式接收/发送,都是先设置__HAL_LOCK(),然后配置huart,配置完后再__HAL_UNLOCK()。但感觉这个Lock没什么用啊。
接受过程中及中断里都没有涉及到这个变量,也许是我没找到。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
__HAL_UNLOCK(huart->hdmarx);
之前一直不明白为什么这里有个UNLOCK,而没有找到对应的LOCK。今天修改这部分时,没有加这句,结果接收数组一直是第一次接收的数据。现在想想,应该是后来DMA就没有再使能。
但我没找到根据Lock位做判断的地方。
一周热门 更多>