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.

[参考译文] TM4C1290NCPDT:在 GPIO 中断内调用 PWMPulseWidthSet()过程

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/924578/tm4c1290ncpdt-calling-pwmpulsewidthset-procedure-inside-the-gpio-interrupt

器件型号:TM4C1290NCPDT

TI 朋友和家人、

我们的客户需要对上个月发布的(新) TivaWare API 进行一些澄清。

它们使用 PWM 来驱动直流步进电机(PG0上的 PWM)、并使用光学开关在达到初始位置时停止电机。

光学开关连接到 GPIO 端口 P 的输入引脚5。  光电 LED 连接到 GPIO 端口 P 的输出引脚4

当它们将 GPIOIntTypeSet (PORT_TA_OPT_IN_BASE、PIN_TA_OPTICE_IN、GPIO_LOW_LEVEL | GPIO_DISCONBLE_INT)与 GPIOIntRegisterPin (PORT_TA_OPTICAL_IN_BASE、PIN_INT_OPTICE_IN、OpticalIntHandler)搭配使用时,没有中断。

当它们将 GPIOIntTypeSet (PORT_TA_OPTIC_IN_BASE、PIN_TA_OPTICAL_IN、GPIO_LOW_LEVEL)与 GPIOIntRegister (PORT_TA_OPTIC_IN_BASE、PIN_INT_OPTICAL_IN、OpticalIntHandler2)搭配使用时,它们将保持在中断处理程序 OpticalIntHandler2内的循环中。  令人惊讶的是,即使他们在中断处理程序中使用 GPIOIntClear (port_ta_optical_in_base、ulStatus)。

也许我们误解了文档和新 API? 它们目前使用 TivaWare_C_Series-2.2.0.295。

是否可以在 GPIO 中断 h 内调用 PWMPulseWidthSet()过程?  我们认为这是真实的、但当然、您可以分享的任何指导或信息都非常感激。

Ty、

是的

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

    尊敬的 Chris:

      [引用 user="Chris Yorkey"]当他们将 GPIOIntTypeSet (port_TA_OPTICAL_IN_BASE、PIN_TA_OPTIC_IN、GPIO_LOW_LEVEL | GPIO_DISCREDED_INT)与 GPIOIntRegisterPin (port_TA_OPTICE_IN_BASE、PIN_INT_OPTICE_IN、OpticalIntHandler)一起使用时,没有中断/引用。

     哪个端口是 PORT_TA_OPTICAL_IN_BASE? 您的客户使用自己的#define 重新定义端口。 请注意、只有端口 Px 和 Qx 具有引脚电平中断功能。  

    并非所有端口都可以使用 GPIO_discrete _INT。 那么、客户使用哪个端口?

    [引用 user="Chris Yorkey">当 GPIOIntTypeSet (port_TA_OPTICAL_IN_BASE、PIN_TA_OPTIC_IN、GPIO_LOW_LEVEL)与 GPIOIntRegister (port_TA_OPTIC_IN_BASE、PIN_INT_OPTICAL_IN、OpticalIntHandler2)一起使用时,它们会保持在 OpticalIntHandler2中断处理程序内部的循环中。  令人惊讶的是,即使他们在中断处理程序中使用 GPIOIntClear (port_ta_optical_in_base、ulStatus)。

    GPIOIntRegister()只接受两个参数。 您可以将其作为 GPIOIntRegister (port_ta_optical_in_base、PIN_INT_optical_in、OpticalIntHandler2)并带有三个参数。 我感到惊讶的是、它甚至会进行编译。  

    [引用 user="Chris Yorkey">我们可能会误解文档和新 API? 它们目前使用 TivaWare_C_Series-2.2.0.295。[/quot]

    您正在讨论哪些新 API? 没有新的 API 添加到 PWM 模块中,为 GPIO 添加的唯一新 API 是 GPIOUnlockPine()。 就这两个模块而言、其他所有内容都是相同的。  

    [引用 user="Chris Yorkey">是否可以在 GPIO 中断 h 内调用 PWMPulseWidthSet()过程?  我们认为这是真实的、但当然、您可以分享的任何指示或信息都非常值得赞赏。

     我看不到问题、但您需要确保启用同步更新、以便占空比不会立即更改、因此新值仅在计数器变为零时排队并生效。

     

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

    您好、Charles、

    非常感谢快速而详细的回复!

    我已要求客户审核您的帖子并做出相应的回复。

    敬请期待。

    再次感谢、

    Chris

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

    您好!

    感谢您的反馈。

    我正在使用端口 P、因此 GPIO_discrete _INT 适用。

    我的 BAD、我在消息中的 GPIOIntRegister (port_TA_OPTIC_IN_BASE、PIN_INT_OPTIC_IN、OpticalIntHandler2)上复制了一个内容。

    在代码中、我实际上使用的是 GPIOIntRegisterPin (port_ta_optical_in_base、PIN_INT_optical_in、OpticalIntHandler2)、因此有3个参数。

    通过在 GPIOIntClear (port_ta_optical_in_base、ulStatus)之后禁用中断并使用 GPIOIntDisable (port_ta_optical_in_base、PIN_INT_optical_in)来解决该问题。

    谢谢、

    Nihad

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

    您好!  

     很高兴您的问题得到解决。