TM4C外部中断处理函数不执行

Conhecemos 2019-01-31 02:36:29
//谢谢各位啦

int in_light = 1;
int FLAG = 1;

void Key2IntHandler(void)//中断服务函数
{
FLAG = 1;

in_light = ~in_light;

GPIOIntClear(GPIO_PORTF_BASE,GPIO_INT_PIN_4);

}
//我尝试把 in_light = ~in_light; 这句话删掉,删掉之后是可以将LED熄灭的。也就是可以执行中断服务函数
//感觉中断服务函数里面只能写一句话

void main(void)
{
//初始化
SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_XTAL_16MHZ|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN);//配置系统时钟80MHz
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_FALLING_EDGE); //设置PF4中断类型 GPIOIntEnable(GPIO_PORTF_BASE,GPIO_PIN_4); //使能PF4中断
GPIOIntRegister(GPIO_PORTF_BASE, Key2IntHandler); //为PF4注册一个中断处理句柄

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);//使能PA引脚
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE,GPIO_PIN_4);//配置PA4输出
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0<<4);//配置LED3开始时点亮

while(1)
{
if(FLAG)
{
if(!in_light)
{
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<4);
}
if(in_light)
{
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0<<4);
}
FLAG = 0;
}
}
}
...全文
812 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly 100% 2019-02-03
  • 打赏
  • 举报
回复
你这个中端处理和主程序的while 没有同步好吧,两个都操作了gpio 所以没感觉出来吧

27,383

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧