mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-09-03 22:53:44 +08:00
659adb6457
date: 2024-03-17T10:14:38 master commit: 7e9a909e0e57ecb31df4c87c5b9a06b1204fd034
24 lines
736 B
C
24 lines
736 B
C
// ********************* Critical section helpers *********************
|
|
volatile bool interrupts_enabled = false;
|
|
|
|
void enable_interrupts(void) {
|
|
interrupts_enabled = true;
|
|
__enable_irq();
|
|
}
|
|
|
|
void disable_interrupts(void) {
|
|
interrupts_enabled = false;
|
|
__disable_irq();
|
|
}
|
|
|
|
uint8_t global_critical_depth = 0U;
|
|
#define ENTER_CRITICAL() \
|
|
__disable_irq(); \
|
|
global_critical_depth += 1U;
|
|
|
|
#define EXIT_CRITICAL() \
|
|
global_critical_depth -= 1U; \
|
|
if ((global_critical_depth == 0U) && interrupts_enabled) { \
|
|
__enable_irq(); \
|
|
}
|