已回答假定已回答

ADuCM360:程序下载到开发板后,串口只能发送不能接收

bomlulu 在 2015-11-12 詢問的問題
最後回覆由bomlulu於2015-11-13提供

ADuCM360开发板,KEIL4.7,

使用的就是开发套件中的J-LINK,通过USB连接到电脑的。

调试的时候收发都是正常的,但是将程序下载到板子后,串口只能向外发,不能够接收PC的数据。

不知道是不是程序的问题,还是我遗漏了什么?

串口程序如下:

int main (void)
{
WdtCfg(T3CON_PRE_DIV1,T3CON_IRQ_EN,T3CON_PD_DIS);
ClkDis(CLKDIS_DISSPI0CLK|CLKDIS_DISSPI1CLK|CLKDIS_DISI2CCLK|CLKDIS_DISPWMCLK|
CLKDIS_DIST0CLK|CLKDIS_DIST1CLK|CLKDIS_DISDMACLK); // Only enable clock to used blocks
ClkCfg(CLK_CD0,CLK_HF,CLKSYSDIV_DIV2EN_DIS,CLK_UCLKCG);
ClkSel(CLK_CD7,CLK_CD7,CLK_CD0,CLK_CD7);
UARTINIT();
NVIC_EnableIRQ(UART_IRQn);
printf("/*ADUCM360*/\r\n");
while (1)
{
TEMP= GetChar();
printf("GET:%x\r\n",TEMP);
}
}
void UARTINIT (void)
{
pADI_GP0->GPCON |= 0x3C;
UrtCfg(pADI_UART,B9600,COMLCR_WLS_8BITS,0);
UrtIntCfg(pADI_UART,COMIEN_ETBEI|COMIEN_ERBFI);
}
unsigned char GetChar (void)
{
unsigned char temp;
while(!RxBufferFull);
temp=UrtRx(pADI_UART);
RxBufferFull=0;
return (temp);
}
int fputc(int ch, FILE *f)
{
while(!TxBufferEmpty);
UrtTx(pADI_UART,ch);
TxBufferEmpty = 0;
return (ch);
}
void UART_Int_Handler ()
{
volatile unsigned char UART_IntID = 0;
UART_IntID= UrtIntSta(pADI_UART);
if((UART_IntID & 0x02) == 0x02)
{
TxBufferEmpty = 1;
}
if((UART_IntID & 0x4) == 0x4)
{
RxBufferFull=1;
}
}

結果