CH547 使用中遇到的問題

現(xiàn)在使用CH547開發(fā)項(xiàng)目,需要用到UART0 作為與上位機(jī)的通訊端口,但是怎樣設(shè)置都不能正常工作,以下是代碼,請各位不吝賜教

/*******************************************************************************
* Function Name??: mInitSTDIO()
* Description? ? : CH559????0??????,????????T1×÷UART0???¨????·??ú?÷,??????????T2
? ?? ?? ?? ?? ?? ? ×÷???¨????·??ú?÷
* Input? ?? ?? ? : None
* Output? ?? ?? ?: None+
* Return? ?? ?? ?: None
*******************************************************************************/
void mInitSTDIO( )????? //這是官方的代碼
{
? ? UINT32 x;
? ? UINT8 x2;

? ? SM0 = 0;
? ? SM1 = 1;
? ? SM2 = 0;???????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
???? RCLK = 0;?????????????????????????????????????????????????????????????????
???? TCLK = 0;?????????????????????????????????????????????????????????????????
???? PCON |= SMOD;
? ? x = 10 * FREQ_SYS / UART0BUAD / 16;??????????????????????????????????????????????????????????????????
???? x2 = x % 10;
? ? x /= 10;
? ? if ( x2 >= 5 ) x ++;???????????????????????????????????????????????????????

???? TMOD = TMOD & ~ bT1_GATE & ~ bT1_CT & ~ MASK_T1_MOD | bT1_M1;? ?? ?? ?? ???//0X20??Timer1×÷??8??×????????¨?±?÷
? ? T2MOD = T2MOD | bTMR_CLK | bT1_CLK;????????????????????????????????????????
???? TH1 = 0-x;?????????????????????????????????????????????????????????????????
???? TR1 = 1;???????????????????????????????????????????????????????????????????
???? TI = 1;?????????????????????????????????????????? // 自己增加的
???? RI = 1;
? ? REN = 1;???????????????????????????????????????????????????????????????????
?????????????????
???? ES = 1;? ?? ?? ?? ???//ENABLE UART0 INT
}

我的想法是用UART0的中斷來接收發(fā)送數(shù)據(jù)

void UART0Interrupt( void ) interrupt INT_NO_UART0 using 1? ?? ?? ?? ?? ? //UART0 中斷入口
{
? ?
? ? if(SCON&0x02)???????????????????//發(fā)射中斷?
???? {
? ?? ???TI=1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
? ? ? ? ? ? ? ? ? ? ? ???
? ? ? ? ? ? ? ? ? ? ? ?? ?if(++TranPointer >= TRANSMIT_DATA_BUFFER)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TranPointer = 0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(TranPointer != BakTranPointer)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???SBUF = TranData[++TranPointer];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ?? ?? ?
? ?? ???//CH549UART1SendByte(dat);
? ? }else if(SCON&0X01)? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?接收中斷
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ?? ? RI=1;
? ? ? ? ? ? ? ? ? ? ? ?? ? ReceiveData[++ReceivePointer]=SBUF;
? ? ? ? ? ? ? ? ? ? ? ?? ? if(ReceivePointer >= RECEIVE_DATA_BUFFER)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???ReceivePointer = 0;
? ? ? ? ? ? ? ? }
}

其中 TranData[],ReceiveData[] 分別是發(fā)送 BUFFER 和接收BUFERR??

現(xiàn)在的問題 只要 設(shè) ES=1; 我原本的程序都運(yùn)行不正常了,請各位不吝指教???????? 急

使用特權(quán)

更多操作

收藏(0) 評分






使用特權(quán)

更多操作

收藏(0) 評分

串口中斷標(biāo)志TI 和 RI寫0清除中斷。你的代碼中初始化和進(jìn)入中斷都將這兩個(gè)寫了1


十分感謝回答,我會盡快測試,可能還有問題,到時(shí)請賜教


你好,進(jìn)行了測試,但是發(fā)現(xiàn),上電后UART0 功能依舊不正常,檢測 TX(P3.1),RX(P3.0)均是低電平,初始化是否要單獨(dú)設(shè)置 TX,RX 管腳,我也進(jìn)行了設(shè)置,但是測量仍為低電平


?
?? GPIO_Init( PORT3,PIN0,MODE3);?? // RX
?? GPIO_Init( PORT3,PIN1,MODE1);? //? TX
??
??? P0 = 0;
?? P1 = 0;
?? P2 = 0;
?? P3 = 0x02;


????請給予指導(dǎo)


是不是UART0 除了 作為下載使用,不能被用來作其他用?


EVT包中大部分例程制作好的HEX文件會用到串口打印,可以嘗試燒錄那些HEX文件看一下串口0能不能發(fā)送數(shù)據(jù)出來,排除一下硬件的問題。

其次在使用串口0的時(shí)候要避免使用標(biāo)準(zhǔn)庫提供的printf函數(shù),可能會導(dǎo)致程序卡在打印函數(shù)內(nèi)部??梢酝ㄟ^在代碼適當(dāng)?shù)牡胤綄O進(jìn)行翻轉(zhuǎn),來監(jiān)控程序是否正常運(yùn)行。


您好,感謝答復(fù),用UART0的串行口打印是沒有問題的,因?yàn)榭蛻襞R時(shí)要求加上位機(jī)通訊,而其他的UART口線已經(jīng)被使用,所以改PCB 最簡單的辦法就使用 UART0跟上位機(jī)通訊,但是試過多次,都沒能達(dá)到。。。所以請問貴司有UART0的通訊 source code ? 另外 客戶要單線半雙工通訊,不知現(xiàn)在的UART 能否實(shí)現(xiàn)?


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

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