La arquitectura ARM principal admite dos tipos diferentes de interrupciones: sensible al pulso y sensible al nivel. (Consulte el Manual de referencia de arquitectura ARMv6-M, Sección B3.4.1) En cualquier caso, si ocurren dos interrupciones al mismo tiempo, o si ocurre una de ellas mientras se procesa la primera interrupción, la segunda interrupción se procesará cuando la primera interrupción de servicio La rutina devuelve y vuelve a habilitar las interrupciones.
La fuente de una interrupción sensible al nivel permanecerá activa hasta que la rutina de servicio de interrupción la borre. Si la rutina de servicio de interrupción no borra la fuente de interrupción, se generará una segunda interrupción tan pronto como se vuelvan a habilitar las interrupciones. La fuente se puede borrar leyendo un registro de datos, por ejemplo, o en algunos casos borrando explícitamente una bandera.
La interrupción sensible al pulso establecerá un indicador que generará la interrupción, sin embargo, el pulso debe ser lo suficientemente largo para que el procesador lo atrape. Si el pulso no es lo suficientemente largo, no será atrapado. La rutina de servicio de interrupción debe borrar explícitamente la bandera.
No estoy seguro de lo que sucederá en el caso de que ocurran dos interrupciones sensibles al nivel al mismo tiempo y la rutina de servicio de interrupción haga algo con el periférico que confirme ambas interrupciones. Un ejemplo de esto sería un controlador USART que manejaba las interrupciones Rx y Tx. Creo que la segunda interrupción no se verá ya que ya no está activa cuando la interrupción se vuelve a habilitar. Estoy justo en medio de un proyecto ARM y, a menos que alguien publique la respuesta, haré algunas pruebas y editaré esta respuesta con los resultados.