打印
[技术问答]

M0516LDN串口接收超时中断不触发怎么办

[复制链接]
1748|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yinhao_1989|  楼主 | 2016-5-4 13:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下:   问题是RDA中断可以触发但RTO中断一直没有触发过,我设为14字节然后发送少于14字节,根本不触发RTO中断。怎么办?
P3->PMD = (P3->PMD & 0x0000FF00) | 0x00000004;
    SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk);
    SYS->P3_MFP |= (SYS_MFP_P30_RXD0 | SYS_MFP_P31_TXD0);
        CLK->APBCLK |= CLK_APBCLK_UART0_EN_Msk;
    CLK->CLKSEL1 = (CLK->CLKSEL1 & (~CLK_CLKSEL1_UART_S_Msk)) | CLK_CLKSEL1_UART_S_HXT;
       
    UART0->BAUD = UART_BAUD_MODE2 | UART_BAUD_MODE2_DIVIDER(__HXT, 115200);
    UART0->LCR = UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1;
        /* Enable Interrupt and install the call back function */
        UART0->FCR &= ~UART_FCR_RFITL_Msk;
        UART0->FCR |= 0X00000030;
        UART0->TOR = 0X00000028;
    UART0->IER |= UART_IER_RDA_IEN_Msk | UART_IER_RTO_IEN_Msk ;
    NVIC_EnableIRQ(UART0_IRQn);
沙发
lovecat2015| | 2016-5-4 22:05 | 只看该作者
那很可能是设置的不够合理

使用特权

评论回复
板凳
yinhao_1989|  楼主 | 2016-5-18 10:06 | 只看该作者
lovecat2015 发表于 2016-5-4 22:05
那很可能是设置的不够合理

请教该怎么设置呢

使用特权

评论回复
地板
dentsgot| | 2016-5-18 20:53 | 只看该作者
那只能找一个例程研究一下看看程序哪里弄的不好

使用特权

评论回复
5
yiyigirl2014| | 2016-5-18 23:22 | 只看该作者
新唐出的有个M0/4的教程,可以看看那个提到这个问题没。

使用特权

评论回复
6
killer2014| | 2016-5-25 14:28 | 只看该作者
其实你没有必要用RTO中断。 你可以在接收中断上下文中,先关闭中断, 然后不停轮询接收完毕为止, 然后再开启中断。
LINUX系统下都是这么实现的, 很少用到RTO, 因为这个RTO不是所有的MCU或者CPU上自带的串口控制器都支持。

使用特权

评论回复
7
rambler| | 2017-11-1 19:00 | 只看该作者
我也碰到类似的问题..RTO中断就是出不来...怀疑资料上有错误或者其他隐藏的设置...

使用特权

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

本版积分规则

3

主题

6

帖子

0

粉丝