/** * \file kv_main.c * \brief * \version 0.1 * \date 2022-10-29 * \author notrynohigh (notrynohigh@outlook.com) * * Copyright (c) 2020 by notrynohigh. All Rights Reserved. */ #include "../port.h" #include "b_os.h" B_TASK_CREATE_ATTR(task1_attr); B_TASK_CREATE_ATTR(task2_attr); B_SEM_CREATE_ATTR(sem_attr); bSemId_t gsemId = NULL; PT_THREAD(test_task1)(struct pt *pt, void *arg) { PT_BEGIN(pt); while (1) { bTaskDelayMs(pt, 5000); bSemRelease(gsemId); } PT_END(pt); } PT_THREAD(test_task2)(struct pt *pt, void *arg) { PT_BEGIN(pt); while (1) { bSemAcquireBlock(pt, gsemId, 1000); if(PT_WAIT_IS_TIMEOUT(pt)) { b_log("timeout\r\n"); } else { b_log("hello [%d]\r\n", bSemGetCount(gsemId)); } } PT_END(pt); } int main() { port_init(); bInit(); gsemId = bSemCreate(10, 0, &sem_attr); bTaskCreate("task1", test_task1, NULL, &task1_attr); bTaskCreate("task2", test_task2, NULL, &task2_attr); while (1) { bExec(); } return 0; }