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:PQ2上的 ISR

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/842887/tm4c1290ncpdt-isr-on-pq2

器件型号:TM4C1290NCPDT

startup_ccs.c 文件

 IntDefaultHandler、                     // GPIO 端口 Q (摘要或 Q0)

 ResetDebugISR、                     // GPIO 端口 Q2

我需要检查 PQ2上的中断是否已触发.. 用于中断状态的 API 是否正确?

除了引脚 PQ2、我在端口 Q 上没有任何其他中断。

谢谢、

Priya

void ResetDebugGPIO_Initialize (void)

   ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);
   resetDbgIntTriggered = 0;
     //将引脚设置为输入
   GPIOPinTypeGPIOInput (GPIO_PORTQ_BASE、GPIO_PIN_2);
   GPIOIntRegisterPin (GPIO_PORTQ_BASE、GPIO_PIN_2、ResetDebugISR);//Temp Disable 09-20-2017
   GPIOIntTypeSet (GPIO_PORTQ_BASE、GPIO_PIN_2、GPIO_Rising 边缘);
   GPIOIntEnable (GPIO_PORTQ_BASE、GPIO_PIN_2);
空 ResetDebugISR (空)

   bool bMsed = false;
   uint32_t intStatus = 0;
       //检查这是否是 GPIO 中断
       intStatus = GPIOIntStatus (GPIO_PORTQ_BASE、bMsed);
       if ((intStatus & GPIO_PIN_2)=GPIO_PIN_2)
       {
           //清除中断
           resetDbgIntTriggered = 1;
       GPIOIntClear (GPIO_PORTQ_BASE、GPIO_PIN_2);
           GPIOIntDisable (GPIO_PORTQ_BASE、GPIO_PIN_2);
           resetDbgIntTriggered = 0;
       }

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

    您好!

     我不会快速看到您的代码有问题。 如果在 ResetDebugISR 上放置断点、是否会看到中断跳闸?

     我假设您的代码中的某个位置(此处未显示)将启用 NVIC 级别的中断、并启用处理器中断。  

      

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

    否 这就是我审查我的代码的原因。 当我触发 ISR 时、我已请求引脚 PQ2处的跳线来确认示波器。

    谢谢、

    Priya

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

     我假设您的代码中的某个位置(此处未显示)将启用 NVIC 级别的中断、并启用处理器中断。  

    您能举一个例子吗?

    在 while (){}循环开始之前调用 IntMasterEnable

    IntPrioritySet (INT_GPIOQ2,(priority_level_1 ));    //PN

    GPIOIntRegisterPin API 寄存器 PQ2 ISR。

    已编辑以添加所有初始化 API

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

    下面是 PJ0引脚上的一个示例、用于查找生成中断的下降沿。

    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOJ)));
    GPIOPinTypeGPIOInput (GPIO_PORTJ_BASE、GPIO_PIN_0);
    GPIOPadConfigSet (GPIO_PORTJ_BASE、GPIO_PIN_0、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);
    GPIOIntTypeSet (GPIO_PORTJ_BASE、GPIO_PIN_0、GPIO_FALLING_EDGE);
    GPIOIntRegister (GPIO_PORTJ_BASE、SW1处理程序);
    GPIOIntEnable (GPIO_PORTJ_BASE、GPIO_INT_PIN_0);
    IntEnable (INT_GPIOJ);
    //
    //启用处理器中断。
    //
    IntMasterEnable(); 

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

    您好!

    注: 向上帝发誓-当我加入这条线时,查尔斯的帖子(上面)不存在。   即便如此-我们相信"单独编码"可能无法(完全)满足此海报的要求。

    [引用 USER="Priya Nadathur70"] GPIOIntTypeSet (GPIO_PORTQ_BASE、GPIO_PIN_2、GPIO_RISING _EDGE);[/引用]

    不应为引脚'PQ2'配备:

    • MCU 的(弱)下拉(电阻器)或外部下拉 (Charles 的文章包含"上拉")
    • "生成逻辑高电平"的方法-在 PQ2处感觉  (此要求尚待说明)
    • 现在、'PQ2'似乎是'浮动'-这是'从不'好的-并且(甚至)更糟糕的是、当被用作'引脚中断'时。   (Charles 的"上拉"已解决)

    应该注意的是、如果海报的应用(需要)、则必须用"弱下拉"替换"上升沿"的检测-验证代码中的"弱上拉")

    如果示波器不可用、您可以对 ISR 进行编程、以"切换"端口_'Q'上的另一个引脚-并让该引脚驱动 A (限流) LED。  (这将确认您输入的 ISR (之前)。)

    请注意、如果使用"触发开关"来"触发 PQ2中断"-该开关将(当然)"跳转"-并且可以(几次)进入中断。   您可以通过使用(另一个) Port_Q 引脚 (设置为输出)来"单脉冲"PQ2...