STM32 HAL库的串口使用__HAL_LOCK(huart)

▼魔方 西西 提交于 2020-03-12 04:56:41

在使用HAL库的时候发现同一串口的接收和发送如果同时进行的话会发生问题,因为

如果用调用下面的函数

HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

 

进行接收串口数据的时候,有可能

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

 

也正在进行中,而这两个函数都会对串口资源上锁

__HAL_LOCK(huart);

导致中断接收函数 HAL_StatusTypeDef HAL_UART_Receive_IT  返回hal_busy; 没有正常的执行,所以串口接收中断也没有打开,再也接收不到下一个字节了。

 

我简单粗爆的把 __HAL_LOCK(huart);注释掉了。

 

 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!