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.

[参考译文] TM4C123GH6PM:引脚中断功能和多引脚中断

Guru**** 2531950 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1124395/tm4c123gh6pm-interrupt-ability-of-pins-and-multi-pin-interrupts

器件型号:TM4C123GH6PM

您好!

在我们可以在 tm4c123ghpm 上附加中断的引脚上是否存在任何限制?

此外、当我们在同一个端口上有2个中断引脚时、我们是在每个引脚上连接多个 ISR、还是在每个端口上仅连接一个 ISP:

从示例来看、我做了如下工作:

void ISR (void){
   if (GPIOIntStatus (GPIO_PORTC_BASE、TRUE)& GPIO_PIN_6){
       GPIOIntClear (GPIO_PORTC_BASE、GPIO_PIN_6);
   }否则、if (GPIOIntStatus (GPIO_PORTC_BASE、TRUE)& GPIO_PIN_5){
       GPIOIntClear (GPIO_PORTC_BASE、GPIO_PIN_5);
   }

我使用以下命令初始化两个引脚:

   GPIOPinTypeGPIOInput (GPIO_PORTC_BASE、GPIO_PIN_5 | GPIO_PIN_6);
   GPIOPadConfigSet (GPIO_PORTC_BASE、GPIO_PIN_5 | GPIO_PIN_6、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD);
   GPIOIntDisable (GPIO_PORTC_BASE、GPIO_PIN_5 | GPIO_PIN_6);
   GPIOIntClear (GPIO_PORTC_BASE、GPIO_PIN_5 | GPIO_PIN_6);
   GPIOIntRegister (GPIO_PORTC_BASE、ISR);
   GPIOIntTypeSet (GPIO_PORTC_BASE、GPIO_PIN_5 | GPIO_PIN_6、GPIO_RISE_EDGE);
   GPIOIntEnable (GPIO_PORTC_BASE、GPIO_PIN_5 | GPIO_PIN_6);

在我的 ISR 中、我通常将 volatile 布尔值设置为 true、然后在主循环中处理该值。

是否有更好的方法来实现此目的? 例如、我是否可以在主循环 GPIOIntStatus (GPIO_PORTC_BASE、TRUE)中检查中断、而不是清除 ISR 内部的中断。 (前提是循环处理前不会出现另一个中断。

此致、

C.A.

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

    您好 C.A.

    这里有正确的方法。

    每个引脚都没有单独的 ISR、因此您需要对整个端口使用单个 ISR、并解析哪个引脚具有中断以执行操作。

    目前使用 全局标志(将其设置为易失性)是一种非常常见的方法、但如果您愿意、只需在循环中轮询即可。 这是最终用户的决定。 全局标志方法可实现最快的处理速度。

    此致、

    Ralph Jacobi