发射已经做好啦,就接收中断没数据出来,不知那出问题啊,求解
void uart_init (void)
{
/* Step 1. GPIO initial */
SYS->GPBMFP.UART0_RX =1; //接收
SYS->GPBMFP.UART0_TX =1; //发射
/* Step 2. Enable and Select UART clock source*/
UNLOCKREG();
SYSCLK-> WRCON.XTL12M_EN = 1;
LOCKREG();
SYSCLK->APBCLK.UART0_EN = 1;//Enable UART clock
SYSCLK->CLKSEL1.UART_S = 0; //Select 12Mhz for UART clock source
SYSCLK->CLKDIV.UART_N = 0; //UART clock source = 12Mhz;
/* Step 3. Select Operation mode */
UART0->FCR.TFR =1; //Reset Tx FIFO
UART0->FCR.RFR =1; //Reset Rx FIFO
UART0->FCR.RFITL = 0;//Set Rx Trigger Level -1byte FIFO
UART0->LCR.PBE = 0;//Disable parity
UART0->LCR.WLS = 3;//8 data bits
UART0->LCR.NSB = 0;//Enable 1 Stop bit
/* Step 4. Set BaudRate */
UART0->BAUD.DIV_X_EN = 1;
UART0->BAUD.DIV_X_ONE = 1;
UART0->BAUD.BRD = 12000000 / 115200 -2;
/* Step 5.open interrupt*/
UART0->IER.RDA_IEN = 1; //开接收中断
UART0->IER.THRE_IEN = 0; //关发送中断
NVIC_EnableIRQ(UART0_IRQn);
}
void SendChar(int ch)
{
while(UART0->FSR.TX_FULL == 1);
UART0->DATA = ch;
if(ch == '\n')
{
while(UART0->FSR.TX_FULL == 1);
UART0->DATA = '\r';
}
}
void UART0_IRQHandler(void)
{
if( UART0->ISR.RDA_IF) 数据中断标志位
{
RS485_Buf[RS485_Cnt] = UART0->DATA;
}
}
|