[技术问答] 关于新唐NUC220系列的UART中断问题

[复制链接]
3169|3
 楼主| cxx26 发表于 2014-10-9 10:54 | 显示全部楼层 |阅读模式
使用的芯片是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灯状态改变
gaoyang9992006 发表于 2014-10-9 18:18 | 显示全部楼层
你先在外面设置某个等点亮一秒钟,然后中断里关掉,你要确认是否没有进入中断程序,关掉的函数直接放到中断的开始,别用翻转。
sdnumcu 发表于 2014-10-10 11:25 | 显示全部楼层
用一下打印函数
niuyaliang 发表于 2014-10-23 21:35 | 显示全部楼层
程序不全,UART的时钟是否打开,多功能引脚是否复用,是否使能,建议参考例程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部