#include "FreeRTOS.h"
#include "task.h"
// Task function
void greentask(void *pvParameters) {
while (1) {
digitalWrite(9, HIGH);
vTaskDelay(2000 / portTICK_PERIOD_MS);
digitalWrite(9, LOW);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}
void bluetask(void *pvParameters) {
while (1) {
digitalWrite(8, HIGH);
vTaskDelay(1000 / portTICK_PERIOD_MS);
digitalWrite(8, LOW);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void redtask(void *pvParameters) {
while (1) {
digitalWrite(10, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
digitalWrite(10, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, STM32!");
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
xTaskCreate(greentask, "greentask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+2, NULL);
xTaskCreate(bluetask, "bluetask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, NULL);
xTaskCreate(redtask, "redtask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, NULL);
if(xTaskCreate(greentask, "greentask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+2, NULL)!=pdPASS)
{
while(1);
}
if(xTaskCreate(bluetask, "bluetask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, NULL)!=pdPASS)
{
while(1);
}
if(xTaskCreate(redtask, "redtask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, NULL)!=pdPASS)
{
while(1);
}
// Start the scheduler
vTaskStartScheduler();
}
void loop() {
// put your main code here, to run repeatedly:
}