0 相关资料
ARM® Generic Interrupt Controller Architecture version 2.0.pdf
1 API测试对比
1.1 __disable_irq同时GIC_DisableIRQ
验证程序如下:
void gic_test(void)
{
__disable_irq();
GIC_DisableIRQ(UART4_IRQn);
}
测试结果:
所有中断都无法响应。
1.2 __disable_irq同时GIC_EnableIRQ
验证程序如下:
void gic_test(void)
{
__disable_irq();
GIC_EnableIRQ(UART4_IRQn);
}
测试结果:
所有中断都无法响应。
1.3 __enable_irq同时GIC_DisableIRQ
void gic_test(void)
{
__enable_irq();
GIC_DisableIRQ(UART4_IRQn);
}
测试结果:
仅GIC_DisableIRQ函数指定的被失能的中断UART4_IRQn无法再响应。
1.4 __enable_irq同时GIC_EnableIRQ
void gic_test(void)
{
__enable_irq();
GIC_EnableIRQ(UART4_IRQn);
}
测试结果:
使能的UART4_IRQn和其它被使能的中断都能响应。
2 结论
可以把__disable_irq、__enable_irq看做响应所有中断的总开关,而GIC_DisableIRQ、GIC_EnableIRQ是响应特定中断的子开关: