板子是CH582M,求兩個串口能同時工作的程序

拿CH582M-EVT有串口1的例子,可以正常工作,改為串口3也可以正常工作,但如果同時啟用串口1和串口3時,串口1正常,而串口3只能發(fā)4個字符,1、3的中斷的接收沒有問題。自己改了串口3的發(fā)送函數(shù),由于不會串口1、3的同時重定向,只好1重定向使用printf函數(shù),而串口3自己寫了個函數(shù):只能發(fā)頭一個字符了。

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)的形式來循環(huán)打印。

多個串口之間需要同時使用,建議參考下篇博客,用數(shù)據(jù)緩存的方式更穩(wěn)妥些。

CH582m串口透傳程序 - JayWell - 博客園 (cnblogs.com)


已解決,多謝。

主要問題有:1、全局DEBUG的設(shè)置問題

2、端口映射

3、發(fā)送函數(shù)中的sizeof(),改為strlen()

通過兩天的磨練,也看明白了程序,從UART0~UART3都可以了。


能分享下嗎



只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频