GPIO 中断掩码
除了启用和禁用之外,还可以屏蔽配置为中断输入的常规用途 I/O (GPIO) 引脚。
如果启用了来自外围设备的级别触发中断并处于活动状态,但内核陷阱处理程序无法立即运行设备的中断服务例程 (ISR) 清除中断,则处理程序会屏蔽 GPIO 引脚上的中断,以防止引脚重复导致更多中断。 稍后,在 ISR 运行并清除中断后,可以安全地取消屏蔽中断。
屏蔽中断不会清除或禁用中断。 如果启用、激活和屏蔽 GPIO 中断,则取消屏蔽此中断会导致 GPIO 控制器设备向处理器发出中断请求信号。
禁用 GPIO 中断时,GPIO 中断掩码位不起作用。 CLIENT_EnableInterrupt回调函数将中断的掩码位设置为零;也就是说,中断在启用后最初取消屏蔽。
屏蔽和禁用 GPIO 中断引脚之间的一个重要区别是,屏蔽会保留引脚的中断配置设置,而禁用引脚则不会。 当 GPIO 中断引脚被屏蔽时,它会保留其以前编程的中断模式 (边缘触发或级别触发的) 、极性 (高主动、低激活或同时) 以及减振设置。 一旦取消屏蔽中断,这些设置就会再次生效。 但是,禁用中断后,引脚的所有中断配置设置都将丢失。 启用引脚后,必须使用所需的中断配置设置再次对其进行编程。
某些 GPIO 控制器在硬件中实现独立于启用中断的寄存器的中断掩码寄存器。
但是,其他 GPIO 控制器提供一组结合中断掩码和中断启用功能的硬件寄存器。 这些控制器的驱动程序在软件中模拟单独的中断掩码和中断启用寄存器。 为此,这些驱动程序跟踪中断启用位和中断掩码位的逻辑状态,并操作硬件寄存器中的相应位,以准确反映每个 GPIO 中断的组合逻辑中断启用位和中断掩码位的行为。