我现在使用的是MINI58LDE,在使用UART1的中断接受数据时候,中断函数读到的一直是乱码?
下面是我对UART1的初始化定义,和UART1的中断函数,请大家和版主给我看一下,究竟怎么回事呢?
void Uart1Init(UINT32 unBaud) //115200
{
SYS_UnlockReg();
/* Set P2 multi-function pins for UART RXD, TXD */
SYS->P2_MFP |= (SYS_MFP_P24_UART1_RXD | SYS_MFP_P25_UART1_TXD);
CLK_EnableModuleClock(UART1_MODULE);
UART1->FIFO = UART_FIFO_RFITL_1BYTE;//uart1 没有FIFO,只能是接受一个byte产生中断
UART1->LINE = (UART_PARITY_NONE|UART_WORD_LEN_8|UART_STOP_BIT_1);//8位数据位,1位停止位
UART_ENABLE_INT(UART1, UART_INTEN_RDAIEN_Msk);//接收数据中断使能
NVIC_EnableIRQ(UART1_IRQn);
UART_Open(UART1, unBaud);
SYS_LockReg();
}
void UART1_IRQHandler(void)
{
uint8_t InChar=0xFF;
uint32_t u32IntSts= UART1->INTSTS;
if(u32IntSts & UART_INTSTS_RDAINT_Msk)
{
/* Get all the input characters */
while(UART_IS_RX_READY(UART1))
{
while(((UART1->FIFOSTS) & UART_FIFOSTS_RXEMPTY_Msk)!=0);//等待有数据,为空等待
/* Get the character from UART Buffer */
InChar = UART_READ(UART1);
printf("%c", InChar); //此处打印出的与送入中断的数据不一样
}
}
} |