RP2040上のMicroPythonは、Threadを1つだけ(メインスレッド以外にもう1つだけ)作れて、作るとcore1で動くらしい。
https://github.com/micropython/micropython/blob/master/ports/rp2/mpthreadport.c#L125
MicroPythonでTimerにコールバックを渡すと、それが割り込みベクタに登録されるらしい。割り込みベクタから呼ばれたコードでは、メモリ確保(とGC)ができないらしく、うっかりメモリ確保すると例外を出したいが例外がオブジェクトだと大変。
MicroPython on microcontrollers — MicroPython latest documentation
https://docs.micropython.org/en/latest/reference/constrained.html