#include "py/runtime.h" #include "py/gc.h" #include "lib/utils/pyexec.h" #include "py/stackctrl.h" #include <stdio.h> #include "max32665.h" /* Defined in linker script */ extern void *__StackTop, *__StackLimit; extern void *__HeapBase, *__HeapLimit; int main(void) { if (0) { mp_stack_set_top(&__StackTop); mp_stack_set_limit((mp_int_t)&__StackLimit); } /* TMR5 is used to notify on keyboard interrupt */ NVIC_EnableIRQ(TMR5_IRQn); while (1) { gc_init(&__HeapBase, &__HeapLimit); mp_init(); pyexec_friendly_repl(); mp_deinit(); } } void gc_collect(void) { void *sp = (void *)__get_MSP(); gc_collect_start(); gc_collect_root( sp, ((mp_uint_t)&__StackTop - (mp_uint_t)sp) / sizeof(mp_uint_t) ); gc_collect_end(); }