[技术问答] 请问M031的串口超时中断为何无法触发?

[复制链接]
3378|38
 楼主| stormwind123 发表于 2025-3-6 12:03 | 显示全部楼层 |阅读模式

9600-N-8-2;


    UART_Open(UART2, 9600);
    /* Set UART line configuration */
    UART2->LINE = UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_2;



    UART2->FIFO &= ~UART_FIFO_RFITL_4BYTES;
    UART2->FIFO |= UART_FIFO_RFITL_8BYTES;
    UART_SetTimeoutCnt(UART2, 100);


    UART_EnableInt(UART2, UART_INTEN_RDAIEN_Msk | UART_INTEN_RXTOIEN_Msk);

    NVIC_EnableIRQ(UART02_IRQn);


void UART02_IRQHandler(void)
{
    uint8_t UART2_u8InChar = 0xFF;

    if (UART_GET_INT_FLAG(UART2, UART_INTSTS_RDAINT_Msk))
    {
        while(!UART_GET_RX_EMPTY(UART2))
            UART2_BUF[UART2_cnt++] = UART_READ(UART2);
        printf("UART_INTSTS_RDAINT_Msk!\n");//这里能触发;

    }

    if (UART_GET_INT_FLAG(UART2, UART_INTSTS_RXTOIF_Msk))
    {
        while(!UART_GET_RX_EMPTY(UART2))
            UART2_BUF[UART2_cnt++] = UART_READ(UART2);
        UART2_data_true = 1;
        printf("UART_INTSTS_RXTOIF_Msk!\n");//这里并不能触发,请问是为何?
               
    }

}
奔跑的牛 发表于 2025-3-7 10:42 | 显示全部楼层
参考牛卧堂上有一样问题 已经解答了
与人间浪漫 发表于 2025-8-28 12:35 | 显示全部楼层
可能因超时时间未正确配置、中断使能未开启、串口时钟未使能,或缓冲区状态不符合触发条件导致。
少女诗篇 发表于 2025-9-14 14:14 | 显示全部楼层
M031 串口超时中断无法触发,可能是未正确配置超时计数寄存器(如设置超时时间)、未使能超时中断位,或串口处于错误状态(如帧错、奇偶校验错)。需检查超时参数是否匹配波特率,确保中断使能位和全局中断开启,排查代码中是否误清中断标志。
牛奶秋刀鱼 发表于 2025-9-23 17:49 | 显示全部楼层
M031 串口超时中断无法触发可能原因:1. 未正确配置超时计数器(如超时时间寄存器设置为 0);2. 中断使能位未开启(UART_IER 的超时中断位未置 1);3. 未使能全局中断;4. 数据未满足超时条件(如持续接收数据未停顿)。需检查寄存器配置、中断向量表映射及触发条件是否满足。
玫瑰凋零日记 发表于 2025-10-4 16:19 | 显示全部楼层
M031 串口超时中断无法触发,可能是超时计数器未使能(需配置 UART_TOR 寄存器)、超时时间设置不合理(需大于帧间隔)、未开启对应中断使能位(UART_IER 的 TOIE 位),或串口未处于接收就绪状态。检查寄存器配置和中断向量表映射是否正确。
sdlls 发表于 2025-10-7 19:55 | 显示全部楼层
超时阈值设置不合理?              
juliestephen 发表于 2025-10-10 15:46 | 显示全部楼层
硬件问题是所有调试的基础。              
eefas 发表于 2025-10-11 15:10 | 显示全部楼层
中断服务程序中是否有死循环或其他导致无法退出的问题。
hudi008 发表于 2025-10-11 15:45 | 显示全部楼层
未正确清除中断标志位              
hilahope 发表于 2025-10-11 20:51 | 显示全部楼层
中断服务函数中误清中断标志位,或未正确处理缓冲区。
tpgf 发表于 2025-10-13 11:22 | 显示全部楼层
两端设备的通信参数(如波特率、数据位、停止位、校验方式)必须完全一致,否则会导致通信失败,自然也无法触发超时中断
tabmone 发表于 2025-10-14 13:41 | 显示全部楼层
空闲线检测中断              
robertesth 发表于 2025-10-14 15:23 | 显示全部楼层
中断使能不完整              
uiint 发表于 2025-10-14 15:57 | 显示全部楼层
检查是否遗漏超时中断服务程序              
youtome 发表于 2025-10-16 21:18 | 显示全部楼层
进入错误中断服务函数              
mickit 发表于 2025-10-17 12:17 | 显示全部楼层
超时中断的本质              
geraldbetty 发表于 2025-10-18 15:22 | 显示全部楼层
如果又接收到了一个新的字节,计时器会立即清零并重新开始计时。
robertesth 发表于 2025-10-18 16:21 | 显示全部楼层
数据未满足超时条件              
jackcat 发表于 2025-10-18 16:43 | 显示全部楼层
在规定时间内没有接收到完整的数据。如果在规定时间内接收到完整的数据,超时中断不会被触发。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

614

主题

3833

帖子

3

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