124 lines
1.4 KiB
Plaintext
124 lines
1.4 KiB
Plaintext
/*
|
|
* led_task.c
|
|
*
|
|
* Created on: Oct 6, 2025
|
|
* Author: jomaa
|
|
*/
|
|
|
|
#include "led_task.h"
|
|
|
|
TaskHandle_t hButtonTask;
|
|
TaskHandle_t tH[3];
|
|
|
|
void CreateLedTask()
|
|
{
|
|
xTaskCreate(
|
|
ButtonTask,
|
|
"ButtonTask",
|
|
128,
|
|
NULL,
|
|
1,
|
|
&hButtonTask
|
|
);
|
|
|
|
xTaskCreate(
|
|
LedAnimationTask1,
|
|
"LedAnimationTask1",
|
|
128,
|
|
NULL,
|
|
1,
|
|
&tH[0]
|
|
);
|
|
|
|
xTaskCreate(
|
|
LedAnimationTask2,
|
|
"LedAnimationTask2",
|
|
128,
|
|
NULL,
|
|
1,
|
|
&tH[1]
|
|
);
|
|
|
|
xTaskCreate(
|
|
LedAnimationTask3,
|
|
"LedAnimationTask3",
|
|
128,
|
|
NULL,
|
|
1,
|
|
&tH[2]
|
|
);
|
|
}
|
|
|
|
void ButtonTask(void* pArgs)
|
|
{
|
|
for(;;)
|
|
{
|
|
uint8_t key = ReadJoy();
|
|
if(key)
|
|
xTaskNotifyGive(tH[key - 1]);
|
|
vTaskDelay(100);
|
|
}
|
|
}
|
|
|
|
void LedAnimationTask1(void* pArgs)
|
|
{
|
|
for(;;)
|
|
{
|
|
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
|
int i;
|
|
for(i = 0; i < 3; i++)
|
|
{
|
|
LED_On(i);
|
|
vTaskDelay(150);
|
|
LED_Off(i);
|
|
}
|
|
for(i = 1; i > 0; i--)
|
|
{
|
|
LED_On(i);
|
|
vTaskDelay(150);
|
|
LED_Off(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
void LedAnimationTask2(void* pArgs)
|
|
{
|
|
for(;;)
|
|
{
|
|
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
|
int i, j;
|
|
for(j = 0; j < 5; j++)
|
|
{
|
|
for(i = 0; i < 3; i++)
|
|
LED_On(i);
|
|
|
|
vTaskDelay(100);
|
|
|
|
for(i = 0; i < 3; i++)
|
|
LED_Off(i);
|
|
|
|
vTaskDelay(100);
|
|
}
|
|
}
|
|
}
|
|
|
|
void LedAnimationTask3(void* pArgs)
|
|
{
|
|
for(;;)
|
|
{
|
|
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
|
int i;
|
|
for(i = 0; i < 3; i++)
|
|
{
|
|
LED_On(i);
|
|
vTaskDelay(150);
|
|
}
|
|
for(i = 2; i >= 0; i--)
|
|
{
|
|
LED_Off(i);
|
|
vTaskDelay(150);
|
|
}
|
|
}
|
|
}
|
|
|