打印
[技术问答]

关于新唐NUC220系列的UART中断问题

[复制链接]
2650|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

粉丝