使用的芯片是NUC220VE3AN,蓝牙模块连接UART2,如果通过while(_UART_IS_RX_READY(UART2))这个循环不断查询UART2是否有数据输入,能够正确接收和发送数据,但是如果是初始化的时候想通过UART的中断功能,当UART2接收到数据时触发中断,这个功能一直测试不到有中断产生,不知道是什么原因,请各位高手帮忙解答
和中断部分有关的程序如下面所示:
void UART2_Init()
{
/*------------------------------------------------------------------------------------------*/
/* Init UART */
/*---------------------------------------------------------------------------------------*/
UART2->BAUD = UART_BAUD_MODE2 | UART_BAUD_DIV_MODE2(PLL_CLOCK, 115200);
_UART_SET_DATA_FORMAT(UART2, UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1);
/* Enable Interrupt and install the call back function */
_UART_ENABLE_INT(UART2, (UART_IER_RDA_IEN_Msk));
/* Set RX Trigger Level = 8 */
_UART_SET_RX_TRG_LEV(UART2,UART_FCR_RFITL_8BYTES);
NVIC_EnableIRQ(UART02_IRQn);
}
void UART02_IRQHandler(void)
{
LED=~LED;
uint32_t u32IntSts= UART2->ISR;
uint8_t u8InChar=0xFF;
if(u32IntSts & UART_ISR_RDA_INT_Msk)
{
while(_UART_IS_RX_READY(UART2))
{
_UART_RECEIVEBYTE(UART2,u8InChar);
if(u8InChar==0xaa)
_UART_SENDBYTE(UART2,0x55);
}
}
}
上面的程序这样初始化有问题吗?一直无法进入中断服务函数中执行LED灯状态改变 |