Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Monterrey
TE2003B.501
Gpo 101
Profesor:
Alumno:
void setup()
{
//creación de tareas
xTaskCreate(vTaskProfiler1,"PROFILER1 TASK",100,NULL,1,NULL);
xTaskCreate(vTaskProfiler2,"PROFILER2 TASK",100,NULL,1,&vTaskHandle2);
xTaskCreate(vTaskProfiler3,"PROFILER3 TASK",100,NULL,1,NULL);
while(1)
{
//se actualiza profiler, se imprime y se bloquea tarea
TASK1Profiler++;
sprintf(mybuffer, "\nTask1 Profiler: %d", TASK1Profiler);
USART_Transmit_String((unsigned char *)mybuffer);
//incrementa prioridad de tarea 2
vTaskDelay(1000/portTICK_PERIOD_MS);
if(TASK1Profiler == 10) {
vTaskPrioritySet(vTaskHandle2, 2); //Cambiar prioridades a las tareas
//Añadir función vTaskSuspend
vTaskSuspend(vTaskHandle2);
//Mensaje
unsigned char suspension[25];
sprintf(suspension, "\nSe suspendio la TAREA 2");
USART_Transmit_String((unsigned char *)suspension);
}
}
}
while(1)
{
//se actualiza profiler, se imprime y se bloquea tarea
TASK2Profiler++;
sprintf(mybuffer, "\nTask2 Profiler: %d", TASK2Profiler);
USART_Transmit_String((unsigned char *)mybuffer);
vTaskDelay(900/portTICK_PERIOD_MS);
}
}
while(1)
{
//se actualiza profiler, se imprime y se bloquea tarea
TASK3Profiler++;
sprintf(mybuffer, "\nTask3 Profiler: %d", TASK3Profiler);
USART_Transmit_String((unsigned char *)mybuffer);
//Añadir el if de la Task1
//Añadir función vTaskResume y Mensaje
vTaskDelay(900/portTICK_PERIOD_MS);
if(TASK3Profiler == 20) {
vTaskPrioritySet(vTaskHandle2, 2); //Cambiar prioridades a las tareas
//Añadir función vTaskSuspend
vTaskResume(vTaskHandle2);
//Mensaje
unsigned char otra[25];
sprintf(otra, "\nSe reanudo la TAREA 2");
USART_Transmit_String((unsigned char *)otra);
}
}
}
Resultados:
https://youtu.be/nNqyZ-h9Neo