[ARM入门] lpc4357 GPIO中断问题

[复制链接]
1371|3
 楼主| vansi1989 发表于 2015-6-29 12:53 | 显示全部楼层 |阅读模式
gpio中断一旦使能,就会马上进入中断处理函数,尽管中断状态位没有被置1,这就造成多进了一次中断处理函数,往后的执行都是正确的。4357的引脚功能已经配置好。直接看我写的中断代码吧
void int_test(void)
{
  NVIC_DisableIRQ(PIN_INT4_IRQn);//禁能中断,PIN_INT4_IRQn是指GPIO中断的4号中断源
  Chip_SCU_GPIOIntPinSel(4,4,8);//4号中断源,Port4,pin number 4.
   Chip_PININT_SetPinModeEdge(LPC_GPIO_PIN_INT,PININTCH4);//设置4号中断源为跳变沿触发模式
  Chip_PININT_EnableIntHigh(LPC_GPIO_PIN_INT,PININTCH4);//使能4号中断源上升沿触发
  Chip_PININT_ClearIntStatus(LPC_GPIO_PIN_INT,PININTCH4);//清除中断状态位
  NVIC_EnableIRQ(PIN_INT4_IRQn);//使能
  __nop();//在这里就会进入中断处理函数,搞不懂
   __nop();
   __nop();
   __nop();
   while(1);
}
void GPIO4_IRQHander(void)
{
   Chip_PININT_ClearIntStatus(LPC_GPIO_PIN_INT,PININTCH4);//清除中断状态位
}
 楼主| vansi1989 发表于 2015-7-3 11:33 | 显示全部楼层
问题已解决,呵呵,虽然没人回答,还是把自己的解决方案贴一下。
首先,中断既然进入,肯定是检测到了触发信号。查找了很久,发现是调试器的缓存问题,调试器记录了上一次中断状态标志位,下次调试的时候它会默认得到了中断触发。我用的ulink,试了jlink就没问题。
lovelymnk 发表于 2015-7-3 23:16 | 显示全部楼层
谢谢经验分享。
bd7qwmcu 发表于 2016-4-8 19:28 | 显示全部楼层
很有启发的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

40

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部