RT1176 edma UART 在开DMA的情况下增加串口空闲中断 程序一直进入中断

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

RT1176 edma UART 在开DMA的情况下增加串口空闲中断 程序一直进入中断

480件の閲覧回数
1586787823
Contributor II

你好

我用的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;
}

 

仅改这两项后 程序连续的进入中断,导致其他程序无法执行,请问有遇到过这种问题吗,连续进入中断的原因是什么,要怎么处理

 

 

0 件の賞賛
返信
2 返答(返信)

457件の閲覧回数
Gavin_Jia
NXP TechSupport
NXP TechSupport

Hi @1586787823 ,

感谢联系NXP技术支持团队!

请问下这里为什么是开启空闲中断?如果是这样的话一直空闲当然就一直中断了...不好意思我没理解这里的逻辑。

但是你后面的if判断又是满,猜测你应该是想配置接收数据满中断?这样的话应该是:
LPUART_EnableInterrupts(DEMO_LPUART, kLPUART_RxDataRegFullInterruptEnable);

Best regards,
Gavin

0 件の賞賛
返信

452件の閲覧回数
1586787823
Contributor II
这个测试中断服务函数我只是随便重新定义了一个,没做处理,我找到问题的原因了,是因为发送中断没清导致的一直进入中断,但我的清理发送中断之前是在LPUART1_DriverIRQHandler中处理,但程序一直都在LPUART1_IRQHandler中运行,没有执行。
0 件の賞賛
返信