STM32 HAL库使用串口遇到问题,串口在发送数据的时候如果有数据发送过来,就没有办法接收,并且会关掉接收中断,经过调试和查证后发现,结果如下。
当调用HAL_UART_Transmit函数的时候,函数内部会给串口上锁,使其处于忙的状态
调用HAL_UART_Receive_IT函数时也会有同样的锁操作,导致串口无法继续接收
所以我的解决办法时直接在库中把锁的函数__HAL_LOCK(huart)注释掉,这样就没问题了
最后,串口属于异步收发,设计的时候不因该有同时收发的情况,所以,我的程序框架写的不好,没有考虑这个情况。Mark here
闻道有先后 术业有专攻
From: shaynerain.com
By: Shaynerain