使用的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 ;
}
