您好!
有人能指出我在代码中错误的位置吗?
我有两个针对中断进行配置的引脚。 端口 M 上的引脚会触发相应的内部处理程序、但是端口 N 上的引脚不会触发其内部处理程序。
以下是被触发的 PM3引脚的代码。
#define ADC_CTRL_PORT GPIO_PORTM_BASE
void PM3_interrupt_enable(void)
{
//Enable Interrupt on ADC_BUSY Pin
IntMasterDisable();
GPIOPinTypeGPIOInput(ADC_CTRL_PORT, ADC_BUSY);
GPIOPadConfigSet(ADC_CTRL_PORT, ADC_BUSY, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
GPIOIntDisable(ADC_CTRL_PORT, ADC_BUSY);
GPIOIntClear(ADC_CTRL_PORT, ADC_BUSY);
GPIOIntRegister(ADC_CTRL_PORT, PORTM_Common_IntHandler);
GPIOIntTypeSet(ADC_CTRL_PORT, ADC_BUSY, GPIO_FALLING_EDGE);
GPIOIntEnable(ADC_CTRL_PORT, ADC_BUSY);
IntMasterEnable();
}
void PORTM_Common_IntHandler(void)
{
// Clear the interrupt
uint32_t status;
SysCtlDelay(10);
status = GPIOIntStatus(ADC_CTRL_PORT, true);
if(status & ADC_BUSY)
{
//Do Something
}
GPIOIntClear(ADC_CTRL_PORT, status);
}
以下是未点亮的 PN0引脚的代码。
#define DCHRG_CMD_PORT GPIO_PORTN_BASE
void Enable_DischargePulse_Interrupt(void)
{
//Enable Discharge Pulse input pin interrupt on ADC_BUSY Pin
IntMasterDisable();
GPIOPinTypeGPIOInput(DCHRG_CMD_PORT, DCHRG_CMD_PIN);
SysCtlDelay(40);
GPIOPadConfigSet(DCHRG_CMD_PORT, DCHRG_CMD_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
GPIOIntDisable(DCHRG_CMD_PORT, DCHRG_CMD_PIN);
GPIOIntClear(DCHRG_CMD_PORT, DCHRG_CMD_PIN);
GPIOIntRegister(DCHRG_CMD_PORT, PORTN_Common_IntHandler);
GPIOIntTypeSet(DCHRG_CMD_PORT, DCHRG_CMD_PIN, GPIO_RISING_EDGE);
GPIOIntEnable(DCHRG_CMD_PORT, DCHRG_CMD_PIN);
IntMasterEnable();
}
void PORTN_Common_IntHandler(void)
{
//Clear the interrupt
uint32_t status;
SysCtlDelay(10);
status = GPIOIntStatus(DCHRG_CMD_PORT, true);
if(status & DCHRG_CMD_PIN)
{
//Do Something
}
GPIOIntClear(DCHRG_CMD_PORT, status);
}
感谢您的时间和帮助。