HC32F030 配置串口1 (PD0,PD1),波特率115200;
短接PD0和PD1,串口发送和接收都很正常;
把串口接到一个WIFI模组,F030有时发数据会卡死在
while (0 == M0P_UART1->ISR_f.TC) {}
发送部分的代码如下:
void bsp_WifiSendByte (char _s8Data)
{
M0P_UART1->ICR_f.TCCF = 0;
M0P_UART1->SBUF_f.DATA = _s8Data;
while (0 == M0P_UART1->ISR_f.TC)
{
}
M0P_UART1->ICR_f.TCCF = 0;
}
然后我把发送改成下方这样,
串口不会卡死,wifi模组和服务器tcp通讯也没有看到异常
void bsp_WifiSendByte (char _s8Data)
{
uint8_t _u8Cnt = 0;
M0P_UART1->ICR_f.TCCF = 0;
M0P_UART1->SBUF_f.DATA = _s8Data;
while (0 == M0P_UART1->ISR_f.TC)
{
delay10us (2);
_u8Cnt++;
if (_u8Cnt >= 250)
break;
}
M0P_UART1->ICR_f.TCCF = 0;
}
|