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.
你好
我需要检测输入端的上升/下降边缘,但只能在我决定时才能检测。
所以我使用的是通过XINT4映射到输入X条(input13)到PIE的GPO。
我进行了以下配置:
初始化时间:
GPIO_SetupXINT4Gpio (DV_GPIO _TOR_IN_CAPT_1_ID_PIN);
/* ISR映射并启用*/
中断注册(INT_XINT4,CT_Tor_iCapture1ISR);
/*首先:配置XINT4 */
XintRegs.XINT4CR.Bit.Polarity = 1;/*上升沿中断(如果输入反转,则下降*/
/*第二:启用XINT4 (极性位必须在启用位之前设置)*/
XintRegs.XINT4CR.bit.enable = 1;/*启用XINT4 */
然后在产品生命中,当我想要捕获输入上升沿时,我做了以下工作:
中断启用(INT_XINT4);
XintRegs.XINT4CR.bit.enable = 1;
要在我不想捕获输入时禁用捕获,请执行以下操作:
XintRegs.XINT4CR.bit.enable = 0;
中断_禁用(INT_XINT4);
这似乎工作正常。 我有一个问题:
如果禁用中断期间出现上升边缘,则在启用中断后立即调用中断例程。 在我的情况下,这种行为是坏的,我只需要在启用中断时发生输入上升边缘时调用中断例程,如果禁用期间发生上升,则不需要调用启用功能上的例程...
如何清除中断标志XINT4??? 我没有找到它!?
谢谢
您好,
我正在使用C2000Ware v 1.0 .1.0
谢谢
我相信您不是在清除包含XINT的指定中断组的IFR寄存器。
在您的情况下,您使用的是XINT4。
使用Driverlib,这是启用和禁用的顺序,
//启用XINT4 interrup_disableMaster(); 中断_禁用(INT_XINT4); 中断注册(INT_XINT4,Xint4Handler); 中断启用(INT_XINT4); interrupt_enableMaster(); //禁用XINT4 interrup_disableMaster(); 中断_禁用(INT_XINT4); InterrupT_unregister (INT_XINT4); //为XINT启用GPIO GPIO _setInterruptPin (引脚编号,(GPIO _ExternalIntNum) GPIO _INT_XINT4); GPIO _启用中断((GPIO_ExternalIntNum)GPIO _ INT_XINT4); GPIO_setInterruptType ((GPIO _外部国际号码) GPIO _ INT_XINT4,GPIO _ INT_TYPE_上升_边缘); //禁用XINT的GPIO GPIO _禁用中断((GPIO_ExternalIntNum)GPIO _ INT_XINT4);
下面是我认为你所缺少的。
在InterrupT_disable函数中,该特定中断的中断组被挂载和清除(PIE ACK和IFR)。
interrupt_clearIFR (groupmask); //确认任何中断 HWREGH (PIECTRL_BASE + PIE_O_ACK)=组掩码; 其中组掩码为 ,interruptNumber = INT_XINT4; intGroup =((uint16_t)(interruptNumber & 0xFF00U)>> 8U)- 1U; 组掩码= 1U< intGroup;
请告诉我这是否有帮助。
你好
要禁用中断,我调用以下命令:
GPIO _禁用中断((GPIO_ExternalIntNum)GPIO _ INT_XINT4); 中断_禁用(INT_XINT4);
然后,IFR寄存器被完全清除。
您好,我认为问题已解决?
Vivek Singh
您好,
我认为问题没有解决。
我必须重试,但我们要求我清除IFR寄存器以解决我的问题,我的代码已经按照指示清除了它。