Ej4 y Ej5
This commit is contained in:
@@ -10,8 +10,15 @@
|
||||
|
||||
#include "stm32l4xx_hal.h"
|
||||
|
||||
#ifdef INC_FREERTOS_H
|
||||
#include "task.h"
|
||||
#endif
|
||||
|
||||
void LED_On(uint8_t led);
|
||||
void LED_Off(uint8_t led);
|
||||
void LED_Toggle(uint8_t led);
|
||||
void animation1(void);
|
||||
void animation2(void);
|
||||
void animation3(void);
|
||||
|
||||
#endif /* INC_LED_DRIVER_H_ */
|
||||
|
||||
@@ -23,4 +23,9 @@ typedef struct
|
||||
void CreateLedTask();
|
||||
void LedToggleTask(void* pArgs);
|
||||
|
||||
void LedAnimationTask(void* pArgs);
|
||||
void LedAnimationTask1(void* pArgs);
|
||||
void LedAnimationTask2(void* pArgs);
|
||||
void LedAnimationTask3(void* pArgs);
|
||||
|
||||
#endif /* INC_LED_TASK_H_ */
|
||||
|
||||
@@ -54,3 +54,76 @@ void LED_Toggle(uint8_t led)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void animation1(void)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
LED_On(i);
|
||||
#ifdef INC_FREERTOS_H
|
||||
vTaskDelay(150);
|
||||
#else
|
||||
HAL_Delay(150);
|
||||
#endif
|
||||
LED_Off(i);
|
||||
}
|
||||
for(i = 1; i > 0; i--)
|
||||
{
|
||||
LED_On(i);
|
||||
#ifdef INC_FREERTOS_H
|
||||
vTaskDelay(150);
|
||||
#else
|
||||
HAL_Delay(150);
|
||||
#endif
|
||||
LED_Off(i);
|
||||
}
|
||||
}
|
||||
|
||||
void animation2(void)
|
||||
{
|
||||
int i, j;
|
||||
for(j = 0; j < 5; j++)
|
||||
{
|
||||
for(i = 0; i < 3; i++)
|
||||
LED_On(i);
|
||||
|
||||
#ifdef INC_FREERTOS_H
|
||||
vTaskDelay(100);
|
||||
#else
|
||||
HAL_Delay(100);
|
||||
#endif
|
||||
|
||||
for(i = 0; i < 3; i++)
|
||||
LED_Off(i);
|
||||
|
||||
#ifdef INC_FREERTOS_H
|
||||
vTaskDelay(100);
|
||||
#else
|
||||
HAL_Delay(100);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void animation3(void)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
LED_On(i);
|
||||
#ifdef INC_FREERTOS_H
|
||||
vTaskDelay(150);
|
||||
#else
|
||||
HAL_Delay(150);
|
||||
#endif
|
||||
}
|
||||
for(i = 2; i >= 0; i--)
|
||||
{
|
||||
LED_Off(i);
|
||||
#ifdef INC_FREERTOS_H
|
||||
vTaskDelay(150);
|
||||
#else
|
||||
HAL_Delay(150);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
void CreateLedTask()
|
||||
{
|
||||
/* EJERCICIOS 1/2/3
|
||||
LED_Config* cfg = pvPortMalloc(sizeof(LED_Config));
|
||||
|
||||
if (cfg != NULL)
|
||||
@@ -25,6 +26,42 @@ void CreateLedTask()
|
||||
1,
|
||||
NULL
|
||||
);
|
||||
*/
|
||||
|
||||
/* EJERCICIO 4
|
||||
xTaskCreate(
|
||||
LedAnimationTask,
|
||||
"LedAnimationTask",
|
||||
128,
|
||||
NULL,
|
||||
1,
|
||||
NULL
|
||||
);
|
||||
*/
|
||||
|
||||
/* EJERCICIO 5
|
||||
* - con la misma prioridad alternan continuamente entre ellas y son animaciones
|
||||
* sin sentido
|
||||
* - con prioridades distintas, visualmente y con un delay un poco más alto
|
||||
* podría parecer que se hacen una detrás de otra (en orden de prioridad)
|
||||
*/
|
||||
xTaskCreate(
|
||||
LedAnimationTask1,
|
||||
"LedAnimationTask1",
|
||||
128,
|
||||
NULL,
|
||||
1,
|
||||
NULL
|
||||
);
|
||||
|
||||
xTaskCreate(
|
||||
LedAnimationTask2,
|
||||
"LedAnimationTask2",
|
||||
128,
|
||||
NULL,
|
||||
2,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
|
||||
void LedToggleTask(void* pArgs)
|
||||
@@ -59,3 +96,87 @@ void LedToggleTask(void* pArgs)
|
||||
vTaskDelete(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void LedAnimationTask(void* pArgs)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
switch(ReadJoy())
|
||||
{
|
||||
case 0:
|
||||
// stand-by
|
||||
LED_Off(0);
|
||||
LED_Off(1);
|
||||
LED_Off(2);
|
||||
break;
|
||||
case 1:
|
||||
animation1();
|
||||
break;
|
||||
case 2:
|
||||
animation2();
|
||||
break;
|
||||
case 3:
|
||||
animation3();
|
||||
break;
|
||||
}
|
||||
vTaskDelay(50);
|
||||
}
|
||||
}
|
||||
|
||||
void LedAnimationTask1(void* pArgs)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
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(;;)
|
||||
{
|
||||
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(;;)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
LED_On(i);
|
||||
vTaskDelay(150);
|
||||
}
|
||||
for(i = 2; i >= 0; i--)
|
||||
{
|
||||
LED_Off(i);
|
||||
vTaskDelay(150);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user