ESP32 FreeRTOS-Fehler beheben: too few arguments to function 'void vPortEnterCritical(portMUX_TYPE*)'
English
Deutsch
Problem:
Auf FreeRTOS auf dem ESP32 möchten Sie einen kritischen Bereich wie diesen verwenden:
critical_zone_usage.cpp
portENTER_CRITICAL();
// Your critical code goes here!
portEXIT_CRITICAL();aber beim Kompilieren des Projekts sehen Sie eine Fehlermeldung wie
build_error.txt
src/main.cpp: In function 'void MyFunc(size_t, int16_t)':
/home/uli/.platformio/packages/framework-arduinoespressif32@src-f2ea83e2545300b10a69ff44ef9dc6cd/tools/sdk/esp32/include/freertos/port/xtensa/include/freertos/portmacro.h:476:75: error: too few arguments to function 'void vPortEnterCritical(portMUX_TYPE*)'
#define portENTER_CRITICAL(mux) vPortEnterCritical(mux)Lösung
Sie müssen portENTER_CRITICAL() und portEXIT_CRITICAL() mit einem Spinlock verwenden, d.h.
critical_zone_with_spinlock.cpp
portENTER_CRITICAL(&mySpinlock);
// TODO Your critical code goes here!
portEXIT_CRITICAL(&mySpinlock);Um ein vollständiges Beispiel zu sehen, wie man einen Spinlock in FreeRTOS initialisiert und für kritische Bereiche verwendet, siehe unseren vorherigen Post ESP32 kritischer Bereich Beispiel mit FreeRTOS / PlatformIO
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