RT1176 edma UART 在开DMA的情况下增加串口空闲中断 程序一直进入中断
05-27-2024
08:17 PM
648 Views
1586787823
Contributor II
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
你好
我用的RT1176,在demo中(SDK_2_15_000_MIMXRT1170-EVKB\boards\evkbmimxrt1170\driver_examples\lpuart\edma_transfer),
1:增加代码开启空闲中断
LPUART_EnableInterrupts(DEMO_LPUART, kLPUART_IdleLineInterruptEnable);
EnableIRQ(LPUART1_IRQn);:
2:定义中断服务函数
void LPUART1_IRQHandler(void)
{
uint8_t data;
/* If new data arrived. */
if ((kLPUART_RxDataRegFullFlag)&LPUART_GetStatusFlags(DEMO_LPUART))
{
data = LPUART_ReadByte(DEMO_LPUART);
}
SDK_ISR_EXIT_BARRIER;
}
仅改这两项后 程序连续的进入中断,导致其他程序无法执行,请问有遇到过这种问题吗,连续进入中断的原因是什么,要怎么处理
2 Replies
05-28-2024
01:18 AM
625 Views
Gavin_Jia
NXP TechSupport
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @1586787823 ,
感谢联系NXP技术支持团队!
请问下这里为什么是开启空闲中断?如果是这样的话一直空闲当然就一直中断了...不好意思我没理解这里的逻辑。
但是你后面的if判断又是满,猜测你应该是想配置接收数据满中断?这样的话应该是:
LPUART_EnableInterrupts(DEMO_LPUART, kLPUART_RxDataRegFullInterruptEnable);
Best regards,
Gavin
05-28-2024
07:26 PM
620 Views
1586787823
Contributor II
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
这个测试中断服务函数我只是随便重新定义了一个,没做处理,我找到问题的原因了,是因为发送中断没清导致的一直进入中断,但我的清理发送中断之前是在LPUART1_DriverIRQHandler中处理,但程序一直都在LPUART1_IRQHandler中运行,没有执行。