Takashi Kawai
/
Nucleo_blink_led_for_mrubyc
This is a port of the mruby/c tutorial Chapter 03 to the mbed environment.
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 #include "mrubyc/hal/hal.h" 00004 #include "mrubyc/mrubyc.h" 00005 00006 DigitalIn mybutton(USER_BUTTON); 00007 DigitalOut myled(LED1); 00008 RawSerial mysci(USBTX, USBRX); 00009 00010 extern const uint8_t sample1[]; 00011 extern const uint8_t sample2[]; 00012 00013 int hal_write(int fd, const void *buf, size_t nbytes) 00014 { 00015 return mysci.write((const uint8_t *)buf, (int)nbytes, NULL, SERIAL_EVENT_TX_COMPLETE); 00016 } 00017 00018 int hal_flush(int fd) 00019 { 00020 char char1 = 0; 00021 while (mysci.readable()) 00022 { 00023 char1 = mysci.getc(); 00024 } 00025 return 0; 00026 } 00027 00028 void hal_delay(mrb_vm *vm, mrb_value *v) 00029 { 00030 wait_ms((int)GET_INT_ARG(0)); 00031 } 00032 00033 void hal_led(mrb_vm *vm, mrb_value *v) 00034 { 00035 myled = (int)GET_INT_ARG(0); 00036 } 00037 00038 void hal_button(mrb_vm *vm, mrb_value *v) 00039 { 00040 int sw = mybutton; 00041 SET_INT_RETURN(sw); 00042 } 00043 00044 int main() { 00045 mysci.baud(115200); // 115Kbps 00046 mysci.format(8, Serial::None, 1); // 8bt, none parity, stop bit 1 00047 mrbc_init (); 00048 mrbc_define_method(0, mrbc_class_object, "led1_write", hal_led); 00049 mrbc_define_method(0, mrbc_class_object, "delay", hal_delay); 00050 mrbc_define_method(0, mrbc_class_object, "sw1_read", hal_button); 00051 mrbc_create_task ( sample1, 0 ); 00052 mrbc_create_task ( sample2, 0 ); 00053 00054 mrbc_run (); 00055 00056 } 00057
Generated on Tue Jul 12 2022 23:36:30 by 1.7.2