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.
您好,TI:
我是外部中断的初学者,我对如何触发外部中断和从GPIO端口读取数据有点困惑。
下面是我的测试要求:
1:我想使用GPIO10 触发具有下降边缘的外部中断
2:我将两个外部中断设置为GPIO8 (上升边缘)和GPIO9 (上升边缘),一个用于从GPIO0-GPIO7读取数据,另一个用于将数据写入GPIO0-GPIO7
3:下面是我的GPIO设置,请告诉我这里是否有一些错误:
对于GPIO0至GPIO7,其余部分与GPIO0相同
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;//启用GPIO0 GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 3;//异步输入
对于GPIO8和GPIO9:(GPIO 9与GPIO8相同)
gpioCtrlRegs.GPAMUX1.bit.GPIO8= 0; // GPIO GpioCtrlRegs.GPADIR.bit.GPIO8 = 0; //输入 GpioCtrlRegs.GPAQSEL1.bit.GPIO8 = 0; // XINT1 Synch to SYSCLKOUT Only GpioIntRegs.GPIOXINT1SEL.Bit.GPIOSEL = 8;// XINT1 is GPIO8 //配置XINT1 XIntruptRegs.XINT1CR.Bit.Polarity = 0; //下降边缘中断 //启用XINT1 XIntruptRegs.XINT1CR.bit.enable =1; //启用XINT1
对于GPIO10:
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;// GPIO10 = GPIOCtrlRegs.GPAQSEL1.bit.GPIO10 = 3;//异步输入 GpioIntRegs.GPIOLPMSEL.bit.GPIO10=1;// GPIOGPIO10将唤醒设备
以下是用于读取GPIO端口A的中断代码:
中断void XINT1_ISR(void) { ReadData =(GpioDataRegs.GPADAT.ALL & 0x0万FF);// 确认此中断以从组1 PIeCtrlRegs.PIEACK/ALL = PIEACK_Group1; }获取更多信息
但我不知道如何编写代码来将触发器GPIO 10连接到这两个中断,请帮助。
谢谢!
(我使用的是F2.8055万,其中controlSUITE中的示例代码为ExternalInterrupts.c)
Mark,您好!
感谢您的帮助,我终于让它发挥了作用。
我能够读取08,而D8和D10的读数较低。
中断void XINT1_ISR(void) { IF(GpioDataRegs.GPADAT.bit.GPIO10 ==0) { ReadData =(GpioDataRegs.GPADAT.ALL & 0x0万FF); }// 确认此中断以从组1 PieCtrlRegs.PIEGroupACK.ALL = PIEACK_1获取更多信息 ;}
我的代码的缺点是我无法在每次发生中断时读取数据。 因为D10不总是0。
所以,我想让D10作为我的第三个中断,D8和D9位于我的D10中断内。
因此我添加了以下代码:
中断void XCS_ISR(void) { void XINT1_ISR(void); xcscount++;// 确认此中断以从组1 中获取更多信息PieCtrlRegs.PIEACK.ALL = PIEACK_Group1; }
但是我无法进入D10 XCS_ISR的第二个XINT1_ISR,这是什么原因导致了此问题的发生?