您好、香榭丽舍
我 想生成 GPIO 中断并且我使用 GPIOIntRegisterPin ()来注册中断服务例程。 但是、当 我调用 GPIOIntRegisterPin (GPIO_PORTQ_BASE、GPIO_PIN_0、DI0_IntHandler)时、我发现了。 它会将错误的值传递给 IntRegister()。 请参阅以下代码。 ui32Int = 0x100、 ui32Pin=GPIO_PIN_0=0x0001。 它将 DI0_IntHandler 地址写入0x101、这不是正确的地址。 在数据表中、PQ0中断矢量应该被放置在0x100上。 这就是 当我触发 PQ1中断并运行 PQ0 ISR 时的原因...。 因为0x101应为 PQ1 ISR 地址。
是否有人可以检查此部件? 我可以在帖子中附加 main.c 文件。 谢谢! e2e.ti.com/.../1715.interrupts.c
void GPIOIntRegisterPin (uint32_t ui32port、uint32_t ui32Pin、 void (* pfnIntHandler)(void) { uint32_t ui32Int; // //检查参数。 // assert ((ui32Port == GPIO_PORTP_BASE)||(ui32Port ==GPIO_PORTQ_BASE)); assert (((ui32Pin > 0)&&(ui32Pin < 8)); assert (pfnIntHandler!= 0); // //获取与指定 GPIO 关联的中断号。 // ui32Int =_GPIOIntNumberGet (ui32Port); // //注册中断处理程序。 // IntRegister (((ui32Int + ui32Pin)、pfnIntHandler); // //启用 GPIO 引脚中断。 // IntEnable (ui32Int + ui32Pin); }