//#include "stm32f4xx_hal.h"
#include "FreeRTOS.h"
#include "task.h"
void Task1(void *pvParameters);
void Task2(void *pvParameters);
void Task3(void *pvParameters);
TaskHandle_t Task1Handle;
TaskHandle_t Task2Handle;
TaskHandle_t Task3Handle;
int main(void) {
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_3 | GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
xTaskCreate(Task1, "Task1", 128, NULL, 3, &Task1Handle);
xTaskCreate(Task2, "Task2", 128, NULL, 1, &Task2Handle);
xTaskCreate(Task3, "Task3", 128, NULL, 2, &Task3Handle);
vTaskStartScheduler();
while (1) {}
}
void Task1(void *pvParameters) {
while (1) {
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1);
vTaskResume(Task2Handle);
vTaskSuspend(NULL);
}
}
void Task2(void *pvParameters) {
while (1) {
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_3);
vTaskResume(Task3Handle);
vTaskSuspend(NULL);
}
}
void Task3(void *pvParameters) {
while (1) {
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
vTaskResume(Task1Handle);
vTaskSuspend(NULL);
}
}