TM4C123GXL LaunchPad 所有的IO都可以作为中断输入源,
LaunchPad的按键是没有上拉电阻的,直接通过一个0ohm电阻接地了,所以还要自己配置上拉电阻
下面是主要代码
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_ints.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "driverlib/interrupt.h"
//PortF的中断进程
void PortFIntHandler(void);
void main(void)
{
//配置时钟
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
// 使能外设 所有外设操作前都要使能,否则会跳转到FaultISR()死循环
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//GPIO注册中断
GPIOIntRegister(GPIO_PORTF_BASE, PortFIntHandler);
//PF4作为中断输入源对应LaunchPad的按键1 SW1
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
//PF2配置为输出模式 对应LaunchPad的蓝色LED
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);
//配置PF4为上拉电阻,输出电流能力2mA
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
//终端类型为下降沿触发
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4 , GPIO_FALLING_EDGE);
//使能PF4中断
GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4);
//全局中断
IntMasterEnable();
//PF2高电平 点亮蓝色LED
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2,GPIO_PIN_2);
while(1)
{
// hehe
}
}
/**
* PortF中断程序
*/
void PortFIntHandler(void)
{
//清除中断标志
GPIOIntClear(GPIO_PORTF_BASE, GPIO_PIN_4);
//PF2低电平 关闭蓝色LED
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2,0);
}