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 中断示例,但没有产生任何结果。然而,似乎:
- 感兴趣的 GPIO 中断是
EINT_3
. - 当在用户代码中定义时,IRQ 处理程序
EINT3_IRQHandler
会被覆盖。
怎么了?