Есть классический event loop, который проверяет флаги и выпоняет код, если что-то приехало из прерываний.
Это конечно завернуто в "кооперативную многозадачность" через ETL, но суть не меняется. По факту, имеем подобие бесконечного цикла, где флаги выставляются из прерываний:
Код:
|
for(;;) {
if (has_data1) process_data_1();
if (has_data2) process_data_2();
if (has_data3) process_data_3();
} |
Основное время этот цикл проверяет флаги и ничего не делает. Хочется по-простому скроить потребление ядра (без фанатизма с микропотреблением). Можно ли как-то по-простому загонять stm32f0 в idle? Так чтобы случайно ничего не пропустить. Не уверен что просто выполнить WFI хорошая идея.
Если в HAL есть готовые фукции - тогда совсем замечательно.