In summary, task manager supports a wide range of hardware, including nearly every official Arduino board, most ESP boards, many mbed version 5 and 6 boards with or without an RTOS. We mainly test mbed with STM32 and nrf52 hardware.
|Processor||Platform||Tested?||Locking||Example developer boards|
|AVR||Arduino||Fully||Atomic||Uno, AT32x, MEGA 2560, MightyCore|
|SAMD||Arduino||Fully||Atomic||MKR, Nano IoT and Zero|
|nrf52840||Arduino||Fully||CAS||Nano 33 BLE devices|
|ESP8266||Arduino||Fully||Atomic||Huzzah, Node MCU|
|ESP32||Arduino||Fully||CAS||Wifi32, Huzzah 32|
|STM32F*||mbed||Fully||CAS||Discovery, Nucleo etc|
|STM32||Arduino||User Report||Atomic||Blue pill|
We have tried as hard as we can to avoid any user-level differences in task manager between platforms. It should work close to identically on all platforms that we support.
Whenever you include
TaskManagerIO.h this pulls in
TaskPlatformDeps.h to work out what platform you’re building for, and to create suitable thread safety and CAS or Atomic based locking constructs for that platform. Again the thread safety is so that you can put events into task manager from any thread, or trigger events from interrupts. You should only ever call runLoop from a single thread, usually for the default
taskManager instance that would be the
loop() method on Arduino, or
main() on mbed.