您尚未登录。

楼主 #1 2020-08-20 17:08:21

tam2907
会员
注册时间: 2020-03-29
已发帖子: 45
积分: 59.5

求助,外部IO中断致程序死掉。

裸机程序,引脚信号一发生程序就挂了,不知道哪里有问题。
关掉GPIOE中断,看PE_EINT_STATUS对应位状态是正常变化的。


中断程序

void EXTI_PE_IRQHandler(void)
{     
	if(read32(PIO_REG_BASE + PE_EINT_STATUS) & (1<<3))//PE3 触摸中断事件
	{
		write32(PIO_REG_BASE + PE_EINT_STATUS, (1<<3));//清引脚中断状态
		get_point();
	}	
	if(read32(PIO_REG_BASE + PE_EINT_STATUS) & (1<<7))//PE7 1268中断事件
	{
		write32(PIO_REG_BASE + PE_EINT_STATUS, (1<<7));//清引脚中断状态
//		RadioIrqProcess();
		
	}
	f1c100s_intc_clear_pend(F1C100S_IRQ_GPIOE);//清除GPIOE中断标志
}

初始化

        f1c100s_intc_set_isr(F1C100S_IRQ_GPIOE, EXTI_PE_IRQHandler);//中断函数

        write32(PIO_REG_BASE + PE_EINT_STATUS, (1<<7));//清引脚中断状态
	or32(PIO_REG_BASE+PE_CFG0,  (6 << 3*4));//PE7 设置为EINTE3输入
	or32(PIO_REG_BASE+PE_CFG0,  (6 << 7*4));//PE7 设置为EINTE7输入

	//or32(PIO_REG_BASE+PE_EINT_CFG0, (1 << 3*4));//电平边沿选择pin0-7   默认上升沿触发
	//or32(PIO_REG_BASE+PE_EINT_CFG0, (1 << 7*4));//电平边沿选择pin0-7   默认上升沿触发

	or32(PIO_REG_BASE+PE_EINT_STATUS, (1 << 3));//清引脚中断状态
	or32(PIO_REG_BASE+PE_EINT_STATUS, (1 << 7));//清引脚中断状态

	or32(PIO_REG_BASE+PE_EINT_CTRL, (1 << 3));//PE3中断脚使能
	or32(PIO_REG_BASE+PE_EINT_CTRL, (1 << 7));//PE7中断脚使能
	//
	f1c100s_intc_clear_pend(F1C100S_IRQ_GPIOE);//清除引脚中断状态
	//
	f1c100s_intc_enable_irq(F1C100S_IRQ_GPIOE);//使能GPIOE中断

离线

#2 2020-08-20 19:12:32

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: 求助,外部IO中断致程序死掉。

仅仅从你给的代码来看,不知道啥原因,所有中断都会进去到中断表的,得看你的中断表是怎么处理的。一般来说中断状态没问题,开启了中断那就没有啥太大问题,而且你指的程序挂掉是压根没进去到中断就挂了吗?

离线

楼主 #3 2020-08-20 20:33:52

tam2907
会员
注册时间: 2020-03-29
已发帖子: 45
积分: 59.5

Re: 求助,外部IO中断致程序死掉。

vip888888 说:

仅仅从你给的代码来看,不知道啥原因,所有中断都会进去到中断表的,得看你的中断表是怎么处理的。一般来说中断状态没问题,开启了中断那就没有啥太大问题,而且你指的程序挂掉是压根没进去到中断就挂了吗?

程序是用的坛内大神的 RTX+EMWIN。程序里增加AUDIO 采集中断,这个是工作正常的。现在是外部端口中断使能后,中断一触发显示就卡住不动了,感觉像是没清掉中断不停再进中断一样。

最近编辑记录 tam2907 (2020-08-20 20:35:44)

离线

#4 2020-08-20 21:25:50

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: 求助,外部IO中断致程序死掉。

那你这个,进了中断可以把获取的状态打印出来看看。清除中断的操作基本就那样。我看你开了两个中断,你可以先开一个中断试试看行不行,只要姿势对了应该不会有啥大问题。

离线

楼主 #5 2020-08-21 19:03:48

tam2907
会员
注册时间: 2020-03-29
已发帖子: 45
积分: 59.5

Re: 求助,外部IO中断致程序死掉。

vip888888 说:

那你这个,进了中断可以把获取的状态打印出来看看。清除中断的操作基本就那样。我看你开了两个中断,你可以先开一个中断试试看行不行,只要姿势对了应该不会有啥大问题。

程序里强制触发中断f1c100s_intc_force_irq(F1C100S_IRQ_GPIOE);是正常的。
有点晕了。

离线

#6 2020-08-21 19:50:22

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: 求助,外部IO中断致程序死掉。

上传下你的工程吧,我在mdk的裸机下是没问题的。

离线

楼主 #7 2020-08-26 08:33:56

tam2907
会员
注册时间: 2020-03-29
已发帖子: 45
积分: 59.5

Re: 求助,外部IO中断致程序死掉。

vip888888 说:

上传下你的工程吧,我在mdk的裸机下是没问题的。

后面莫名奇妙的好了,但是偶尔还是会画面卡住。不知道是不是焊接背锅。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn