This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSPM0G3507:始终触发 FreeRTOS | UART 中断的 MSPM0 UART_CALLBACK 示例

Guru**** 1788580 points
Other Parts Discussed in Thread: MSPM0G3507
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1402691/mspm0g3507-mspm0-uart_callback-example-with-freertos-uart-interrupt-always-get-triggered

器件型号:MSPM0G3507

工具与软件:

您好、TI 专家:

我尝试在 uart_callback_freertos_ticlang 示例中使用 LP_MSPM0G3507 LaunchPad 时。 我遇到了一个问题,不明白。

为什么 UART 中断始终被触发? 实际上、TX 和 RX 线路是干净的。

CCS 版本:12.7.1.00001  

MSPM0 SDK 版本:mspm0_sdk_2_01_00_03

示例: C:\ti\mspm0_sdk_2_01_00_03\examples\rtos\LP_MSPM0G3507\drivers\uart_echo

以下代码可执行、回显功能的功能正常工作。

但是、当我在 UART0_IRQHandler (void)函数中放置断点时、始终会触发该断点。 所示

看起来始终会设置 DMA 相关标志。

然后、我在 xPortSysTickHandler (void)上放置一个断点。 它绝不会被触发。 看起来系统节拍被 UART 中断抢先。

如何解释这一点?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 

    现在、M0的 IIDX = 17、这是一个 DMA 在 RX 事件上完成。

    文件[UARTMSPM0.c]中的函数[UARTMSP_interruptHandler]似乎没有清除中断挂起位。

    您可以在[UARTMSP_interruptHandler]底部按如下所示添加一行来清除所有中断或状态。

    DL_UART_clearInterruptStatus(hwAttrs->regs, 0x1FFFF);
    
    or
    
    DL_UART_clearInterruptStatus(hwAttrs->regs, status);

    此致、

    Helic

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Hellic:

    感谢您的关注。  

    1现在、M0的 IIDX = 17、这是在 RX 事件上完成 DMA。  

     你是指 IIDX=10h、而不是17   

    2 我听从了你的建议。 将代码添加到 UARTMSP_interruptHandler 下面。 ( 进行了细微修改)。

    但是、它甚至无法显示回显... 字符串、只需打印 E.

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 

    1现在、M0的 IIDX = 17、这是一个在 RX 事件上完成的 DMA。  [报价]

    是的、这是我的错。 它应该在 Rx 或 TX 上完成 DMA。

    然而它甚至无法显示回显... 字符串、仅打印 E.

    在您清除所有中断状态后、可能会导致出现这种情况。

    您可以尝试在进入相应的中断处理函数后清除 single-bit 标志。

    此致、

    Helic

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Helic:

    1这些代码由 UART 驱动程序库提供、这是否意味着 UART 中断处理程序不能 正确处理与 DMA 相关的中断事件。

    2我还尝试了 UART_NO_DMA 宏命令并在 ti_drivers_config.c 中修改了 UARTObject[]  但是、它没有帮助。  

    3你能帮我尝试一下吗? 是我自己的问题还是 常见问题。

    4由于大家更熟悉驱动程序库代码、如果需要对其进行一些修改、最好自行进行更改。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 

    最近很忙。

    我会在有时间后立即尝试调试。

    从我的猜测中可以看出、本演示无法正确处理中断标志。

    此致、

    Helic

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Helic:

    我有一个项目正在解决方案选择阶段、 如果您有一些进展、请告诉我。 非常感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 

    我已经运行了最新的 SDK 2.02和2.01、两者看起来都始终触发 DMA_SDK Done_Rx 中断。

    此致、

    Helic

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 

    我联系了软件团队、看起来这是一个问题。

    本周末的 SDK 版本将修复此问题。  

    请耐心等待更新。

    此致、

    Helic

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Helic:

    谢谢您让我知道