Descripción del Programa
El programa demuestra el uso de eventos para coordinar tres tareas que iluminan el LED RGB en rojo, verde y azul, mediante los comandos _lwevent_wait_for() y _lwevent_set().
Código
#include <stdio.h>
#include <mqx.h>
#include <bsp.h>
#include"lwevent.h"
/* Task IDs */
/* Task IDs */
#define INIT_TASK 5
#define RED_TASK 6
#define GREEN_TASK 7
#define BLUE_TASK 8
#define ROJO 1
#define VERDE 2
#define AZUL 4
#define t_out 200
LWEVENT_STRUCT lwevent;
extern void init_task(uint32_t);
extern void red_task(uint32_t);
extern void green_task(uint32_t);
extern void blue_task(uint32_t);
TD_STRUCT_PTR red_ptr, green_ptr, blue_ptr;
const TASK_TEMPLATE_STRUCT MQX_template_list[] =
{
/* Task Index, Function, Stack, Priority, Name, Attributes, Param, Time Slice */
{ INIT_TASK, init_task, 1000, 8, "init", MQX_AUTO_START_TASK, 0, 0 },
{ RED_TASK, red_task, 1000, 9, "red", MQX_AUTO_START_TASK, 0, 0 },
{ GREEN_TASK, green_task, 1000, 9, "green", MQX_AUTO_START_TASK, 0, 0 },
{ BLUE_TASK, blue_task, 1000, 9, "blue", MQX_AUTO_START_TASK, 0, 0 },
{ 0 }
};
/*TASK*-----------------------------------------------------
*
* Task Name : world_task
* Comments :
* This task creates rgb_task and then prints " World ".
*
*END*-----------------------------------------------------*/
void init_task
(
uint32_t initial_data
)
{
_task_id red_task_id, green_task_id,blue_task_id;
GPIO_DRV_Init(switchPins,ledPins);
red_task_id = _task_create(0, RED_TASK, 0);
if (red_task_id == MQX_NULL_TASK_ID) {
printf ("\n Could not create red_task\n");
}
green_task_id = _task_create(0, GREEN_TASK, 0);
if (green_task_id == MQX_NULL_TASK_ID) {
printf ("\n Could not create green_task\n");
}
blue_task_id = _task_create(0, BLUE_TASK, 0);
if (blue_task_id == MQX_NULL_TASK_ID) {
printf ("\n Could not create blue_task\n");
}
int counter = 0;
_lwevent_create(&lwevent,LWEVENT_AUTO_CLEAR); //Poneencero a los bits delevento
_lwevent_set(&lwevent,ROJO); //activa el bit ROJO
_task_abort(_task_get_id());
while(1) {
counter++;
/* Write your code here ... */
}
}
/*TASK*-----------------------------------------------------
*
* Task Name : rgb_task
* Comments :
* This task prints " Hello".
*
*END*-----------------------------------------------------*/
void red_task
(
uint32_t initial_data
)
{
int counter = 0;
_lwevent_wait_for(&lwevent,ROJO,FALSE,NULL);
printf("Rojo\n");
GPIO_DRV_ClearPinOutput(BOARD_GPIO_LED_RED);
GPIO_DRV_SetPinOutput(BOARD_GPIO_LED_GREEN);
GPIO_DRV_SetPinOutput(BOARD_GPIO_LED_BLUE);
_time_delay_ticks(t_out);
_lwevent_set(&lwevent,VERDE);
}
void green_task
(
uint32_t initial_data
)
{
int counter = 0;
_lwevent_wait_for(&lwevent,VERDE,FALSE,NULL);
printf("Verde\n");
GPIO_DRV_SetPinOutput(BOARD_GPIO_LED_RED);
GPIO_DRV_ClearPinOutput(BOARD_GPIO_LED_GREEN);
GPIO_DRV_SetPinOutput(BOARD_GPIO_LED_BLUE);
_time_delay_ticks(t_out);
_lwevent_set(&lwevent,AZUL);
}
void blue_task
(
uint32_t initial_data
)
{
int counter = 0;
_lwevent_wait_for(&lwevent,AZUL,FALSE,NULL);
printf("Azul\n");
GPIO_DRV_SetPinOutput(BOARD_GPIO_LED_RED);
GPIO_DRV_SetPinOutput(BOARD_GPIO_LED_GREEN);
GPIO_DRV_ClearPinOutput(BOARD_GPIO_LED_BLUE);
_time_delay_ticks(t_out);
_lwevent_set(&lwevent,ROJO);
}
/* EOF */
Essentials of MQX RTOS, LWEvents
Para conocer el curso completo de Essentials Course of MQX, visita la página:
Essentials Course of MQX
Referencias
Para mayor información sobre el uso de TAREAS, visita la página:Essentials of MQX RTOS, LWEvents
Para conocer el curso completo de Essentials Course of MQX, visita la página:
Essentials Course of MQX
Hotel Casinos & Gambling - MapYRO
ResponderEliminarA full-service casino resort is on 경산 출장샵 the Vegas Strip. This 충주 출장안마 casino resort is within a 성남 출장샵 5-minute drive of the 진주 출장안마 Fremont Street Experience. The 경산 출장안마 hotel offers