This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "inc/hw_ints.h"
#include "inc/hw_nvic.h"
#include "driverlib/interrupt.h"
//int main (void)
//{
//
// //PF4:SW1
// SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
// SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
// GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
//
// GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
//
// GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_4);
//
// while(1)
// {
// while(GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_4)==0x00)
// {
//
// GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0xFF);
// SysCtlDelay(3200000); //320000:60ms //延时*时钟周期数=3*参数
// GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0x00);
// SysCtlDelay(3200000);
// }
// }
//
//}
extern void Int_GPIOF_Handler(void)
{
unsigned long ulStatus;
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0xFF);
ulStatus = GPIOIntStatus(GPIO_PORTF_BASE, true); // 读取中断状态
GPIOIntClear(GPIO_PORTF_BASE, ulStatus); // 清除中断状态
}
int main (void)
{
//配置LED引脚
SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
//配置按键
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN| SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
//配置按键中断
GPIOIntRegister(INT_GPIOF,&Int_GPIOF_Handler);
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_LOW_LEVEL);
GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4);
IntEnable(INT_GPIOF);
IntMasterEnable();
while(1)
{
SysCtlDelay(320000);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0xFF);
SysCtlDelay(320000);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0x00);
}
}
申明和定义一个中断函数,然后复制这个中断函数的名称。打开.s启动文件,把中断函数复制到相应的位置就好了。如果还不会的话,可以看看官方tiva ware下的mdk例程是如何实现的了。
你这明显操作的是一个IO,有这种可能,中断操作了,但是主函数又翻转了。至于有没有进去中断,中断中加个断点就知道了。还有你给的两个main函数,到底用的是哪个呢?对GPIO中断的配置,也是有问题的,建议你重新修改代码试试。