打印

HC32F030 串口异常

[复制链接]
1166|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
suchen218|  楼主 | 2021-6-23 15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
}



使用特权

评论回复

相关帖子

沙发
qinxg| | 2021-6-24 09:32 | 只看该作者
国产CPU的外设说不定就有这样那样的bug, 在 if (_u8Cnt >= 250) break; break这里设置一个断点, 看下串口的各个寄存器有哪里不对的. Keil有个菜单可以显示外设寄存器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝