#include #include #include #include #include #include "board.h" #include "ctx.h" #include "stack.h" #include "queue.h" #include "thread.h" #include "schedule.h" #include "isr.h" #include "sys_tick.h" #define STACK_SIZE 256 stack_t tc_1_stack[STACK_SIZE]; struct thread_context tc_1; void task1(void *arg) { gpio_open(&led_1); gpio_write(&led_1, 0); while(1) { sleep_ms(1000); gpio_toggle(&led_1); uart_write(&uart_1, "Hello world\r\n", 13); } } char rx_buf[80]; void task2(void *arg) { while(1) { int i = uart_read(&uart_1, rx_buf, 80); if(i > 0) { uart_write(&uart_1, rx_buf, i); } } } stack_t tc_2_stack[STACK_SIZE]; struct thread_context tc_2; int main(void) { board_init(); sys_tick_init(&timer_1); uart_open(&uart_1); thread_create(&tc_1, tc_1_stack, STACK_SIZE, task1, NULL, THREAD_PRIO_LOW); thread_create(&tc_2, tc_2_stack, STACK_SIZE, task2, NULL, THREAD_PRIO_LOW); schedule_start(); return 0; }