GPIO 中断掩码

配置为中断输入的通用 I/O(GPIO)引脚除了可以启用和禁用外,还可以屏蔽和取消屏蔽。

如果外围设备的级别触发中断已启用且处于活动状态,但内核陷阱处理程序无法立即运行设备的中断服务例程(ISR),以清除中断,处理程序会屏蔽 GPIO 引脚上的中断,以防止该引脚重复导致更多中断。 稍后,在 ISR 完成运行并清除中断之后,可以安全地取消屏蔽中断。

屏蔽中断不会清除或禁用中断。 如果启用了 GPIO 中断,并且该中断处于活动状态且已屏蔽,那么取消屏蔽此中断会导致 GPIO 控制器设备向处理器发出中断请求。

GPIO 中断掩码位在禁用 GPIO 中断时不起作用。 CLIENT_EnableInterrupt回调函数将中断的掩码位设置为零;也就是说,中断最初在启用后取消屏蔽。

掩码和禁用 GPIO 中断引脚之间的一个重要区别在于,掩码会保留引脚的中断配置设置,而禁用引脚不会。 当 GPIO 中断引脚被屏蔽时,它将保留其以前编程的中断模式(边沿触发或电平触发)、极性(高电平有效、低电平有效或双边有效)和消抖设置。 这些设置在中断解除屏蔽后立即再次生效。 但是,当中断被禁用时,所有引脚的中断配置设置都会丢失。 启用引脚后,必须按照所需的中断配置重新对其进行编程。

某些 GPIO 控制器在硬件中实现中断掩码寄存器,这些寄存器与中断使能寄存器是独立且不同的。

然而,其他 GPIO 控制器提供一组硬件寄存器,用于合并中断掩码和中断启用功能。 这些控制器的驱动程序模拟软件中的单独的中断掩码和中断启用寄存器。 为此,这些驱动程序跟踪中断启用位和中断掩码位的逻辑状态,并操作硬件寄存器中的相应位,以准确反映每个 GPIO 中断的组合逻辑中断启用位和中断掩码位的行为。