Hello,
我用FPGA与DSP连接进行测试,FPGA端产生一个方波接到dsp2812的外部中断引脚,但是程序运行后,dsp2812一直不能进入中断子程序,看到PieCtrl.PIEIFR1.bit.INTx4一直为0,我在watch窗口中手动将这个值改为1后,程序进入中断,并且可以连续进入中断。
请问大家有没有人知道为什么刚开始不能进入中断吗?
谢谢
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.
Hello,
我用FPGA与DSP连接进行测试,FPGA端产生一个方波接到dsp2812的外部中断引脚,但是程序运行后,dsp2812一直不能进入中断子程序,看到PieCtrl.PIEIFR1.bit.INTx4一直为0,我在watch窗口中手动将这个值改为1后,程序进入中断,并且可以连续进入中断。
请问大家有没有人知道为什么刚开始不能进入中断吗?
谢谢
1. 你的连接的GPIO是怎么设置的? 是配置成了外部中断么?
2. PIE级的IER允许了么?
从你的描述看,如果手动的话,可以进入中断,证明全局中断已经允许了。但还要允许PIE的中断。
谢谢你的及时回复!
我的GPIO设置如下:
XIntruptRegs.XINT1CR.bit.ENABLE = 1;////外部中断信号使能
XIntruptRegs.XINT1CR.bit.POLARITY =1;////极性配置为下降沿产生中断
在主程序执行while(1)之前已经执行了允许PIE的IER的语句:
PieCtrl.PIEIER1.bit.INTx4 = 1;
但是不知为什么,就是无法执行中断程序,CPU的IFR一直为0。
1. 你尝试用一个外部信号,先拉高再拉到地,我现在怀疑那个方波是否发出的正常,是否达到了低电平,就是是否低于了0.7V,持续时间有多少?
2. 对GPIO的配置,请注意前后要加 EALLOW和EDIS,否则配置不起作用。
在GPIO设置前,已经加EALLOW和EDIS了。应该是电平的问题,现在已经正常了,谢谢你!
如果我们自己编写了中断服务子程序,在2812_DefaultIsr.c中就可以把相应的部分删除吧?
不用删除,只要你写的ISR的名字和DefaultIsr.c中的名字不一样就行,然后映射到中断向量表中就可以。
如果我使用2812_DefaultIsr.c中的ISR,那我还需要类似PieVectTable.XINT1 = &ExtIntISR这样的语句吗?
2812_DefaultIsr.c中的那些ISR在默认情况下已经映射到中断向量表中了吗?
是的,你需要把上面这个映射的名字改成你写的ISR的名字。 这样DefaultISR中的就不用删除。