ESP32 kritischer Bereich Beispiel mit FreeRTOS / PlatformIO
English
Deutsch
Um einen kritischen Bereich auf dem ESP32 mit FreeRTOS zu betreten, müssen Sie Folgendes tun:
Deklarieren Sie global einen Spinlock:
esp32_spinlock_declare.cpp
portMUX_TYPE mySpinlock;In setup(), initialisieren Sie den Spinlock:
esp32_spinlock_init.cpp
spinlock_initialize(&mySpinlock);Jetzt, wo immer Sie einen kritischen Bereich betreten möchten, führen Sie aus:
esp32_critical_section_example.cpp
portENTER_CRITICAL(&mySpinlock);
// TODO Your critical code goes here!
portEXIT_CRITICAL(&mySpinlock);Bei Verwendung in einem Interrupt-Handler verwenden Sie stattdessen:
esp32_critical_section_isr_example.cpp
portENTER_CRITICAL_ISR(&mySpinlock);
// TODO Your critical code goes here!
portEXIT_CRITICAL_ISR(&mySpinlock);FreeRTOS stellt sicher, dass keine zwei Threads, die mySpinlock verwenden, gleichzeitig ausgeführt werden.
Check out similar posts by category:
Arduino, ESP8266/ESP32, FreeRTOS, PlatformIO
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow