板子是CH582M,求两个串口能同时工作的程序

拿CH582M-EVT有串口1的例子,可以正常工作,改为串口3也可以正常工作,但如果同时启用串口1和串口3时,串口1正常,而串口3只能发4个字符,1、3的中断的接收没有问题。自己改了串口3的发送函数,由于不会串口1、3的同时重定向,只好1重定向使用printf函数,而串口3自己写了个函数:只能发头一个字符了。

void printf3(uint8_t * Tx3Buff)

{

    uint8_t i=sizeof(Tx3Buff);

    while(i)

    {

    R8_UART3_THR=*Tx3Buff--;

    i--;

    while(R8_UART3_TFC);

    }

}


您好,这个*addr--的写法可能会有问题,建议改成从*(addr+0)到*(addr+i-1)的形式来循环打印。

多个串口之间需要同时使用,建议参考下篇博客,用数据缓存的方式更稳妥些。

CH582m串口透传程序 - JayWell - 博客园 (cnblogs.com)


已解决,多谢。

主要问题有:1、全局DEBUG的设置问题

2、端口映射

3、发送函数中的sizeof(),改为strlen()

通过两天的磨练,也看明白了程序,从UART0~UART3都可以了。


能分享下吗



只有登录才能回复,可以选择微信账号登录