我正在使用 PIC32MZ2048ECH144。我有两个开关连接到 RH8(引脚 81)和 RH9(引脚 82)。我在 MHC 中没有看到任何在引脚级别设置中断的选项,因此我得到了为端口 H 生成的 ISR。我需要单独调用每个引脚的 ISR。因此,在“system_init.c”中,在“SYS_Initialize”函数中,我添加了以下几行,
PLIB_PORTS_PinChangeNoticePerPortEnable(PORTS_ID_0, PORT_CHANNEL_H, PORTS_BIT_POS_8); PLIB_PORTS_PinChangeNoticePerPortEnable(PORTS_ID_0, PORT_CHANNEL_H, PORTS_BIT_POS_9);
MHC在“system_interrupt.c”中生成的ISR:
void __ISR(_CHANGE_NOTICE_H_VECTOR, ipl3AUTO) _IntHandlerChangeNotification_PortH1(void)
{
PLIB_INT_SourceFlagClear(INT_ID_0,INT_SOURCE_CHANGE_NOTICE_H);
APP_SwitchChangeNoticed();
}
我用以下几行替换了上面的 ISR 宏:
void __ISR(_ADC1_DATA22_VECTOR, ipl3AUTO) _IntHandlerChangeNotification_PortH1(void)
{
PLIB_INT_SourceFlagClear(INT_ID_0, INT_SOURCE_CHANGE_NOTICE);
APP_SwitchChangeNoticed();
}
void __ISR(_ADC1_DATA23_VECTOR, ipl3AUTO) _IntHandlerChangeNotification_PortH(void)
{
PLIB_INT_SourceFlagClear(INT_ID_0,INT_SOURCE_CHANGE_NOTICE_H);
test1();
}
这没有成功。我提到了链接http://microchip.wikidot.com/faq:78。我觉得从“/pic32mx/include/proc/p32mz2048ech144.h”中选择 ISR 宏的向量号是错误的。(我使用 _ADC1_DATA22_VECTOR 和 _ADC1_DATA23_VECTOR 认为针对它们的值 81 和 82 是引脚编号,这同样不起作用。)关于如何设置引脚电平中断(同一端口上的 2 个引脚)的任何帮助或提示都会非常棒!请为我帖子中的任何错误道歉。
提前致谢。