Компоненты и технологии • №2 '2011 компоненты


рис. 6. Результат выполнения учебной программы № 1 в среде Windows рис. 7



Pdf көрінісі
бет23/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   19   20   21   22   23   24   25   26   ...   129
Kurniz

рис. 6. Результат выполнения учебной программы № 1 в среде Windows
рис. 7. Разделение процессорного времени между задачами в учебной программе № 1
рис. 8. Результат работы учебной программы
в случае назначения Задаче 2 более высокого приоритета


99
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 4 '2011
www.kite.ru
компоненты
микроконтроллеры
возможна ситуация «зависания» задачи с низким приоритетом, кото-
рая никогда не выполнится. Программисту необходимо тщательно 
проектировать прикладные программы и благоразумно задавать 
уровни приоритетов, чтобы избежать такой ситуации. Далее будет 
показано, как избежать «зависания» низкоприоритетных задач, ис-
пользуя механизм событий для управления ходом их выполнения.
Следует отметить, что FreeRTOS позволяет динамически менять 
приоритет задачи во время выполнения программы. Для получе-
ния и задания приоритета задачи во время выполнения служат API-
функции uxTaskPriorityGet() и vTaskPrioritySet() соответственно.
Подсистема времени FreeRTOS
Подробнее остановимся на системном кванте времени. Планировщик 
получает управление каждый квант времени, это происходит по преры-
ванию от таймера. Продолжительность системного кванта определяется 
периодом возникновения прерываний от таймера и задается в файле 
FreeRTOSConfig.h макроопределением configTICK_RATE_HZ.
configTICK_RATE_HZ определяет частоту отсчета системных 
квантов в герцах, например значение configTICK_RATE_HZ, равное 
100 (Гц), определяет продолжительность системного кванта, равную 
10 мс. Следует отметить, что в большинстве демонстрационных про-
ектов продолжительность системного кванта устанавливается равной 
1 мс (configTICK_RATE_HZ = 1000).
Все API-функции, связанные с измерением временных интерва-
лов, в качестве единицы измерения времени используют системный 
квант. Используя макроопределение portTICK_RATE_MS, можно 
получить продолжительность системного кванта в миллисекундах. 
Но для задания длительности кванта нужно использовать макро-
определение configTICK_RATE_HZ.
Следует также упомянуть о счетчике квантов — это системная 
переменная типа portTickType, которая увеличивается на едини-
цу по прошествии одного кванта времени и используется ядром 
FreeRTOS для измерения временных интервалов. Значение счетчи-
ка квантов начинает увеличиваться после запуска планировщика, 
то есть после выполнения функции vTaskStartScheduler(). Текущее 
значение счетчика квантов может быть получено с помощью API-
функции xTaskGetTickCount().


Достарыңызбен бөлісу:
1   ...   19   20   21   22   23   24   25   26   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет