#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" #include "semaphore.h" #define STACK_SIZE 256 static stack_t tc_1_stack[STACK_SIZE]; static struct thread_context tc_1; static stack_t tc_2_stack[STACK_SIZE]; static struct thread_context tc_2; static struct semaphore sem; void task2(void *arg) { gpio_open(&led_1); gpio_write(&led_1, 0); while(1) { semaphore_wait(&sem); gpio_toggle(&led_1); } } void task1(void *arg) { while(1) { sleep_ms(3000); semaphore_post(&sem); } } int main(void) { board_init(); sys_tick_init(&timer_1); semaphore_init( &sem, 0); 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; }