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.

[参考译文] AM62P:计时器:在计时器 ISR 中调用驱动程序的可行性

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1654315/am62p-timer-feasibility-of-driver-calling-in-timer-isr

部件号: AM62P

您好、
 
我们的客户希望在计时器中断中使用 uart_driver、以便定期通过 UART 发送数据。 现在、我可以成功在 MCU 域中配置一个计时器、并可以按预期输入时间轮的回调函数。 但是、我认为不允许在 ISR 中调用 uart_driver、因为这可能会导致堆栈溢出、从而导致无法预测的行为。 我想仔细检查我的陈述是否正确? 如果您有其他的解决方案可以分享、我将不胜感激。
我使用的 MCU+SDK 版本为 11.01.01.08、UART_driver 配置为回调模式。
 
此致、
Bomiao   
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Fan:

    可以在计时器 ISR 例程中以回调模式使用 UART、因为您不会进入 UART 的阻塞或轮询工作模式。 但您需要注意一些指导。

    • Re 可进入性保护: uart_write () 使用 Hwip_disable ()/ restore () 来检查传输是否已在进行中。 如果在前一次传输尚未完成时从计时器 ISR 调用该函数、则返回 SystemP_FAILURE(忙)。
    • 回调在 UART ISR 上下文中执行:您的写完成回调在 UART 硬件中断内部运行、而不是在计时器 ISR 中运行。 保持轻量化。

    此致、

    Vaibhav