98
КОМПОНЕНТЫ И ТЕХНОЛОГИИ •
№ 4 '2011
компоненты
микроконтроллеры
/* Задержка на некоторый период Т2*/
for( ul = 0; ul < pxTaskParam->period; ul++ )
{
}
}
vTaskDelete( NULL );
}
/*-----------------------------------------------------------*/
/* Точка входа. С функции main() начнется выполнение программы. */
short main( void )
{
/*
Заполнение полей структуры, передаваемой Задаче 1 */
strcpy(xTP1.string, “Task 1 is running”);
xTP1.period = 10000000L;
/* Заполнение полей структуры, передаваемой Задаче 2 */
strcpy(xTP2.string, “Task 2 is running”);
xTP2.period = 30000000L;
/* Создание Задачи 1. Передача ей в качестве параметра указателя на структуру xTP1 */
xTaskCreate( vTask, /* Функция, реализующая задачу */
( signed char * ) “Task1”,
configMINIMAL_STACK_SIZE,
(void*)&xTP1, /* Передача параметра */
1,
NULL );
/* Создание Задачи 2. Передача ей указателя на структуру xTP2 */
xTaskCreate( vTask, ( signed char * ) “Task2”, configMINIMAL_STACK_SIZE, (void*)&xTP2, 1, NULL );
/* Запуск планировщика */
vTaskStartScheduler();
return 1;
}
Выполнив сборку проекта и запустив на выполнение полученный
исполнимый файл
rtosdemo.exe, можно наблюдать результат работы
учебной программы № 1 (рис. 6).
Задача 2 выводит сообщение о своей работе в три раза реже, чем
Задача 1. Это объясняется тем, что в Задачу 2 было передано значение
периода в 3 раза большее, чем в Задачу 1. Таким образом, передача
различных параметров в задачи при их создании позволила добиться
различной функциональности отдельных экземпляров одной задачи.
Достарыңызбен бөлісу: