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.