使用的Tiva C Series Connected LaunchPad Evaluation Board这个开发板,芯片型号就是TM4C1294NCPDT,根据这张图片
选择的PJ0当外部中断源,我调试的时候输出的结果每次输出都是:
in num is:0
hello world!
代码如下:
#include <stdint.h> #include <stdbool.h> #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "inc/hw_nvic.h" #include "inc/hw_types.h" #include "inc/hw_gpio.h" #include "driverlib/gpio.h" #include "driverlib/interrupt.h" #include "driverlib/pin_map.h" #include "driverlib/systick.h" #include "driverlib/sysctl.h" #include "driverlib/timer.h" #include "utils/uartstdio.h" void main(void) { //按键中断配置 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);//使能 GPIOJ 口 GPIODirModeSet(GPIO_PORTJ_BASE,GPIO_PIN_0,GPIO_DIR_MODE_IN); ////设置为输入模式 GPIOPadConfigSet(GPIO_PORTJ_BASE,GPIO_PIN_0,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD); /////进一步设置为 2mA推挽上拉 GPIOIntRegister(GPIO_PORTJ_BASE,IntGPIOJtHandler()); //注册中断程序 GPIOIntTypeSet(GPIO_PORTJ_BASE,GPIO_PIN_0,GPIO_RISING_EDGE); //中断类型设置 GPIOIntEnable(GPIO_PORTJ_BASE,GPIO_PIN_0); //开启外部中断中断 printf("hello world!\n"); IntMasterEnable(); //开全局中断 while(1) { }; } void IntGPIOJtHandler(void) { uint32_t int_num=100; int_num=GPIOIntStatus(GPIO_PORTJ_BASE,true); printf("in num is:%d\n",int_num); GPIOIntClear(GPIO_PORTJ_BASE,int_num); return ; }