1
0
Files
setr2-monorepo/P2_SETR2/ejercicios/parte2-notify.txt
2025-10-27 15:41:57 +01:00

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);
}
}
}