gpt4 book ai didi

c - 为 LPC1769 Cortex M3 编写 GPIO 中断处理程序

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:38 24 4
gpt4 key购买 nike

是否有针对 ARM Cortex-M3 的简单 GPIO 中断示例?

我已经写了一些代码,但是不知何故中断似乎没有触发:

#include "LPC17xx.h"
#include "lpc17xx_pinsel.h"
#include "lpc17xx_gpio.h"

void EINT3_IRQHandler(void) {
NVIC_ClearPendingIRQ(EINT3_IRQn);
puts("triggered"); // fired
}

int main() {
/** ... **/
/** ... **/

// listen for input on INPUT pin @ GPIO port 1, pin 31
PINSEL_CFG_Type PinCfg;
PinCfg.Funcnum = 0;
PinCfg.OpenDrain = 0;
PinCfg.Pinmode = 0;
PinCfg.Portnum = 1;
PinCfg.Pinnum = 31;
PINSEL_ConfigPin(&PinCfg);

GPIO_SetDir(port, 1 << pin, 0);

NVIC_EnableIRQ(EINT3_IRQn);

while(1); // wait

/** ... **/
/** ... **/

return 0;
}

我一直在在线/GitHub 上搜索 LPC1769 Cortex M3 的简单 GPIO 中断示例,但未找到任何结果。然而,似乎:

  1. 感兴趣的 GPIO 中断是 EINT_3
  2. IRQ 处理程序 EINT3_IRQHandler 在用户代码中定义时被覆盖。

怎么了?

最佳答案

在 LPC17xx 上,您有端口 0 和 2 的中断启用寄存器,请参阅 UM10360.pdf 第 9.5.6 章以供引用。您在端口 1、3 和 4 上没有 GPIO 中断 - 您的代码似乎使用端口 1.31,它不能有 GPIO 中断。

在异常处理器中您一定不要忘记清除 IO0IntClearIO2IntClear 中的中断标志。否则,即使使用 NVIC_ClearPendingIRQ() 也会重新触发处理函数。

处理函数的“正确”名称可能取决于您的工具链。

关于c - 为 LPC1769 Cortex M3 编写 GPIO 中断处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com