#include <stdio.h> volatile int flag = 0; void ISR1() { printf("ISR1 start\n"); if (flag == 0) { flag = 1; ISR2(); } printf("ISR1 end\n"); } void ISR2() { printf("ISR2 start\n"); printf("ISR2 end\n"); } int main() { printf("Main start\n"); ISR1(); printf("Main end\n"); return 0; }
#include <stdio.h> #include <signal.h> void ISR1(int signum) { printf("ISR1 start\n"); // Nested interrupts should be enabled here printf("ISR1 end\n"); } void ISR2(int signum) { printf("ISR2 executed\n"); } int main() { signal(SIGINT, ISR1); signal(SIGTERM, ISR2); while(1) {} return 0; }
void ISR1() {
// Enable nested interrupts here
__enable_irq();
// ISR code
}