裸机程序,引脚信号一发生程序就挂了,不知道哪里有问题。
关掉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中断
离线
仅仅从你给的代码来看,不知道啥原因,所有中断都会进去到中断表的,得看你的中断表是怎么处理的。一般来说中断状态没问题,开启了中断那就没有啥太大问题,而且你指的程序挂掉是压根没进去到中断就挂了吗?
离线
仅仅从你给的代码来看,不知道啥原因,所有中断都会进去到中断表的,得看你的中断表是怎么处理的。一般来说中断状态没问题,开启了中断那就没有啥太大问题,而且你指的程序挂掉是压根没进去到中断就挂了吗?
程序是用的坛内大神的 RTX+EMWIN。程序里增加AUDIO 采集中断,这个是工作正常的。现在是外部端口中断使能后,中断一触发显示就卡住不动了,感觉像是没清掉中断不停再进中断一样。
最近编辑记录 tam2907 (2020-08-20 20:35:44)
离线
那你这个,进了中断可以把获取的状态打印出来看看。清除中断的操作基本就那样。我看你开了两个中断,你可以先开一个中断试试看行不行,只要姿势对了应该不会有啥大问题。
离线
那你这个,进了中断可以把获取的状态打印出来看看。清除中断的操作基本就那样。我看你开了两个中断,你可以先开一个中断试试看行不行,只要姿势对了应该不会有啥大问题。
程序里强制触发中断f1c100s_intc_force_irq(F1C100S_IRQ_GPIOE);是正常的。
有点晕了。
离线
上传下你的工程吧,我在mdk的裸机下是没问题的。
离线
上传下你的工程吧,我在mdk的裸机下是没问题的。
后面莫名奇妙的好了,但是偶尔还是会画面卡住。不知道是不是焊接背锅。
离线