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**** 1839620 points
Other Parts Discussed in Thread: EK-TM4C123GXL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/583233/tm4c123gh6pm-generate-interrupts-on-pressing-on-board-switches

器件型号:TM4C123GH6PM
Thread 中讨论的其他器件:EK-TM4C123GXL

你好。

我尝试在按下 Tiva C 系列 Launchpad 上的 SW1 (PF4)时生成中断。 出于某种原因、中断服务例程不会命中(使用断点进行验证)。 我已按如下方式配置 GPIO:

void GPIO_config()
{

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);

GPIOPinTypeGPIOInput (GPIO_PORTF_BASE、GPIO_PIN_4);

IntEnable (INT_GPIOF);

GPIOPadConfigSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);

GPIOIntDisable (GPIO_PORTF_BASE、GPIO_PIN_4);

GPIOIntClear (GPIO_PORTF_BASE、GPIO_PIN_4);

GPIOIntRegister (GPIO_PORTF_BASE、IR_received_);

GPIOIntTypeSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_FALLING_EDGE);

GPIOIntEnable (GPIO_PORTF_BASE、GPIO_PIN_4);
} 

我不熟悉这一点、因此可能缺少一些非常基本的东西。 我们非常感谢您的任何帮助。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否调用了"IntMasterEnable();?" (或"MAP_IntMasterEnable();"?) 您可能希望从 TivaWare 中导入并运行示例工程、具体位置为:"C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c123gxl\interrupts"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。

    是的、我在调用"GPIO_config()"之前调用了"Rom_IntMasterEnable();"。 我正在编辑同一个示例以更好地适应我的应用。 还介绍了 GPIO_JTAG 示例。 也许我需要解锁 PORT_F 才能使用它?! 只是一个很好的地方
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我似乎找不到任何问题。
    但是、您在启用外设后将引脚配置为 GPIOInput "过快"-作为一种良好的做法、请在继续后添加一行以等待外设就绪。
    如果这不能解决您的问题、请运行相关寄存器的检查清单... 很无聊,但它可能会显示缺少什么...
    您还可以展示您的 ISR 代码、以便其他代码可以查看并可能提供帮助。
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Bruno。

    具体而言、问题似乎出在 PF4和 PF0引脚。 我尝试使用其他引脚(PB0和 PB1)、代码工作正常。 已尝试按如下方式解锁 PF0:

    //解锁 PF0

    HWREG (GPIO_PORTF_BASE + GPIO_LOCK)= GPIO_LOCK_KEY;//解锁 CR 寄存器。
    HWREG (GPIO_PORTF_BASE + GPIO_O_CR)= 0x01;//提交寄存器。
    HWREG (GPIO_PORTF_BASE + GPIO_AFSEL)&= 0xFE;// 0值表示使用 GPIO 寄存器。

    这也不起作用。 不确定我的操作是否正确。 我现在只让 ISR 中的 LED 闪烁、但要添加完整的功能。 是否知道为什么未配置 PF0和 PF4来产生中断?

    苏德
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sudeep、
    在 tm4c123gh下午6点、PF0实际上被锁定。 PF4不是。 因此、PF4应该起作用。
    如果您在尝试在未解锁的情况下更改 PF0寄存器后查看它们、您应该会看到它们没有更改。
    查看其他论坛帖子、了解如何解锁。 数据表中提到了您未触及的另一个寄存器:

    '此引脚默认配置为 GPIO、但已锁定、只能通过解锁进行重新编程
    引脚、并通过设置 GPIOCR 寄存器取消提交。"

    但不要忘记在启用外设后添加等待外设就绪的良好做法。

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

    嗨、Bruno。

    感谢您在启用外设后等待外设就绪的提示。  

    我查看了数据表、它确实说只有 PF0被锁定。 在启用 PF4后、我尝试添加一个小延迟、但没有结果。 似乎无法确定配置 PF4还需要做什么。

    无论如何、现在都要考虑解锁 PF0、并尝试使其正常工作。

    此致、

    苏德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sudep! 还有一些空白建议:
    -延迟应在启用外设之后、而不是在"启用"PF4... - SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
    -逐步调试代码并在每次更改后查看寄存器值。 如果你真的很可疑、调试到(F5) TivaWare 调用并看到它们逐位变化-将其与不同引脚上的工作集进行比较。 我们可能未在您的代码中找到某些拼写错误、您会发现它。
    -示波器探测输入信号-是否有信号进入引脚?
    -购买汽油,在电路板上涂抹50毫升,在上面点燃一个匹配剂-最好在外部裸露的位置。 购买新硬件并从头开始...
    尝试不执行第3步、对吧?
    谢谢
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruno -您是否应该告知海报、像 PF0一样、"汽油港"(PGx)也是"锁定"的、在使用之前必须"释放"?