diff --git a/main.c b/main.c index c5770c7..1377e16 100644 --- a/main.c +++ b/main.c @@ -19,15 +19,21 @@ GPIO_InitTypeDef GPIO_InitStruct; -osThreadId_t idTask1; +osThreadId_t idTask1, idTask2; osEventFlagsId_t evt_id; const osThreadAttr_t AttrTask1 = { .stack_size = 512, // Create the thread stack size - .priority = osPriorityNormal, //Set initial thread priority to high + .priority = osPriorityHigh, //Set initial thread priority to high .name = "Task 1" }; + const osThreadAttr_t AttrTask2 = { + .stack_size = 512, // Create the thread stack size + .priority = osPriorityNormal, //Set initial thread priority to high + .name = "Task 2" +}; + void init_button(void) { /* Configure GPIO pin: PI2 (BTN_0) as interrupt */ @@ -59,11 +65,24 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_PIN) /*---------------------------------------------------------------------------- * Thread 1 *---------------------------------------------------------------------------*/ -__NO_RETURN static void taskCounter(void *argument) { +__NO_RETURN static void task1(void *argument) { for (;;) { - osEventFlagsWait(evt_id, 0x1U, osFlagsWaitAny, osWaitForever); + osEventFlagsWait(evt_id, 0x1U, osFlagsNoClear, osWaitForever); + HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, 0); + } +} + +/*---------------------------------------------------------------------------- + * Thread 2 + *---------------------------------------------------------------------------*/ +__NO_RETURN static void task2(void *argument) { + + + for (;;) { + osEventFlagsWait(evt_id, 0x1U, osFlagsNoClear, osWaitForever); + osEventFlagsClear(evt_id, 0x1U); HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, 0); } } @@ -117,8 +136,9 @@ int main (void) { osKernelInitialize(); // Initialize CMSIS-RTOS - idTask1 = osThreadNew(taskCounter, NULL, &AttrTask1); - + idTask1 = osThreadNew(task1, NULL, &AttrTask1); + idTask2 = osThreadNew(task2, NULL, &AttrTask2); + //events evt_id = osEventFlagsNew(NULL);