关于lm3s811的中断问题

Other Parts Discussed in Thread: LM3S811

最近学习LM3S811,刚开始就遇到了一个很棘手的问题

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);

 GPIOPinTypeGPIOInput(GPIO_PORTC_BASE,GPIO_PIN_4);

 GPIOIntTypeSet(GPIO_PORTC_BASE,GPIO_PIN_4,GPIO_LOW_LEVEL);

 GPIOPinIntEnable(GPIO_PORTC_BASE,GPIO_PIN_4);

 IntEnable(INT_GPIOC);

 IntMasterEnable();

程序执行完倒数第二句就进入了IntDefaultHandler()函数,直接死循环,怎样才能够设置直接进入该中断?我在设置以上后,怎么样推出死循环?

  •  

    这段代码没啥问题

    把其他代码贴上来看看

  • CHUNYAN GAO,

    你的中断服务程序在哪里?

    建议你参考StellarisWare里的interrupts例程.

     

     

     

  • jsw-Token 说:

    CHUNYAN GAO,

    你的中断服务程序在哪里?

    建议你参考StellarisWare里的interrupts例程.

     

     

     

    执行完倒数第二句的时候处理器中断还没有打开,所以即便产生PC4即便产生了中断,也不会跳到中断处理函数那里。

    如果执行最后一句后跳到IntDefaultHandler中,那可能和PC4的中断处理函数有关。所以怀疑是其他的问题

  • 在EK-LM3S811上跑了一下,程序正常,可以通过按键触发中断。

    如jsw-Token所言,楼主检查是不是忘了在Startup.s里注册中断函数了,所以进入IntDefaultHandler()里了。

    中断Startup.s的编写可以参考boards\ek-lm3s811\interrupts\startup_rvmdk.S,涉及到的就两处:

    EXTERN  IntGPIOC  和  DCD     IntGPIOC                  ; GPIO Port C。