打印
[技术问答]

请教一下NUC220的串口中断问题。

[复制链接]
2074|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cxx26|  楼主 | 2015-2-11 14:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void UART1_Init()
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init UART                                                                                               */
/*---------------------------------------------------------------------------------------------------------*/
    UART1->BAUD = UART_BAUD_MODE2 | UART_BAUD_DIV_MODE2(PLL_CLOCK, 9600);//PLL_CLOCK=48000000
    _UART_SET_DATA_FORMAT(UART1, UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1);
        /* Enable Interrupt*/
        _UART_ENABLE_INT(UART1, (UART_IER_RDA_IEN_Msk));//串口只在有接收到数据时产生中断
        NVIC_EnableIRQ(UART1_IRQn);
}

//ISR to handle UART Channel 1 interrupt event   
void UART1_IRQHandler(void)
{
        LED1^=1;//LED闪烁
        uint32_t u32IntSts= UART1->ISR;
        uint8_t u8InChar=0x00;
        if(u32IntSts & UART_ISR_RDA_INT_Msk)
        {
                while(_UART_IS_RX_READY(UART1))
                {
                _UART_RECEIVEBYTE(UART1,u8InChar);
                UART_SENDBYTE(UART1,u8InChar);//串口和一个无线模块通讯,将接收到的数据再通过串口发送出去。
                }
        }       
}
按照上面的代码运行,无法进入中断,用示波器看到串口是有波形输入,而且波形也是对的,但是就是没法进入中断,因为不闪灯,也没有数据通过串口发送到无线模块(串口发送数据功能正常),请帮忙看看这部分代码是否有问题?
如果将初始化中的_UART_ENABLE_INT(UART1, (UART_IER_RDA_IEN_Msk));修改为_UART_ENABLE_INT(UART1, (UART_IER_RDA_IEN_Msk | UART_IER_RTO_IEN_Msk | UART_IER_THRE_IEN_Msk));则可以进入中断一次并且能够闪灯和发送一个字节的数据,但是无法接受更多的数据,不知道什么原因。请懂的帮忙看看,谢谢
沙发
598330983| | 2015-2-13 20:28 | 只看该作者
楼主是不是硬件连接错了

使用特权

评论回复
板凳
mintspring| | 2015-2-14 13:17 | 只看该作者
串口中断干什么用啊?我不理解

使用特权

评论回复
地板
mintspring| | 2015-2-16 21:58 | 只看该作者
检查中断配置,有误

使用特权

评论回复
5
mintspring| | 2015-2-28 07:20 | 只看该作者
参考库函数的例子

使用特权

评论回复
6
lovecat2015| | 2015-3-25 20:43 | 只看该作者
楼主,你现在把问题解决了吗
分享一下解决的过程啊

使用特权

评论回复
7
cxx26|  楼主 | 2015-4-1 11:16 | 只看该作者
lovecat2015 发表于 2015-3-25 20:43
楼主,你现在把问题解决了吗
分享一下解决的过程啊

没有解决,找代理商的技术支持,也是说参考库函数例子,我完全就是照搬的,发整个代码过去他们也没发现问题,所以我的问题一直解决不了,所以后来换成Microchip的单片机了,我个人用了几个月的新唐的M0系列,发现个人能力不足,好多模块都是直接复制例程但是会出现一些无法解决的问题,所以放弃了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝