#include #include #define MEMORY_SIZE (1024*10) #define FLASH_CODE 0x8020000 //ch32v203 static uint8_t memory_pool[MEMORY_SIZE]; int hal_write(int fd, const void *buf, int nbytes) { Serial.write((uint8_t*)buf,(size_t)nbytes); return (nbytes); } int hal_flush(int fd) { return 0; } unsigned char hal_read(int fd) { while (Serial.available() == 0); return Serial.read(); } void hal_abort(const char *s){} static void c_sleep(mrbc_vm *vm, mrbc_value v[], int argc){ if(argc>0){ mrbc_int_t sec = mrbc_integer(v[1]); SET_INT_RETURN(sec); delay(sec * 1000); } } static void c_sleep_ms(mrbc_vm *vm, mrbc_value v[], int argc){ if(argc>0){ mrbc_int_t sec = mrbc_integer(v[1]); SET_INT_RETURN(sec); delay( sec ); } } void setup() { Serial.begin(115200); //mrbc_init(memory_pool, MEMORY_SIZE); mrbc_init_alloc(memory_pool, MEMORY_SIZE); mrbc_init_global(); mrbc_init_class(); mrbc_define_method(0, 0, "sleep", c_sleep); mrbc_define_method(0, 0, "sleep_ms", c_sleep_ms); mrbc_init_class_digital(); mrbc_init_class_adc(); mrbc_init_class_pwm(); mrbc_init_class_i2c(); mrbc_init_class_spi(); mrbc_init_class_get(); mrbc_run_mrblib( FLASH_CODE ); //mrbc_create_task( FLASH_CODE, 0 ); //mrbc_run(); } void loop() {}