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


рис. 7. Результат работы учебной программы № 2 рис. 8



Pdf көрінісі
бет90/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   86   87   88   89   90   91   92   93   ...   129
Kurniz

рис. 7. Результат работы учебной программы № 2
рис. 8. Взаимная блокировка двух задач


139
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 8 '2011
www.kite.ru
компоненты
микроконтроллеры
Функция vApplicationTickHook()
Прежде чем продолжить изучение меха-
низмов взаимного исключения, стоит об-
ратить внимание на еще одну возможность 
FreeRTOS. Как известно, подсистема вре-
мени FreeRTOS [1, № 4] основывается на си-
стемном кванте времени. По прошествии 
каждого кванта времени ядро FreeRTOS вы-
полняет внутренние системные действия, 
связанные как с работой планировщика, так 
и с отсчетом произвольных временных про-
межутков.
Программисту предоставляется возмож-
ность определить свою функцию, которая 
будет вызываться каждый системный квант 
времени. Такая возможность может оказать-
ся полезной, например, для реализации меха-
низма программных таймеров.
Чтобы задать свою функцию, которая бу-
дет вызываться каждый системный квант 
времени, необходимо в файле настроек ядра 
FreeRTOSConfig.h задать макроопределение 
conf igUSE_TICK_HOOK равным 1. Сама 
функция должна содержаться в программе 
и иметь следующий прототип:
void vApplicationTickHook( void );
Как и функция задачи Бездействие
функция vApplicationTickHook() являет-
ся функцией-ловушкой или функцией об-
ратного вызова (callback function). Поэтому 
в программе не должны встречаться явные 
вызовы этой функции.
Отсчет квантов времени во FreeRTOS 
реализован за счет использования преры-
вания от одного из аппаратных таймеров 
микроконтроллера, вследствие чего функ-
ция vApplicationTickHook() вызывается 
из обработчика прерывания. Поэтому к ней 
предъявляются следующие требования:
Она должна выполняться как можно бы-

стрее.
Должна использовать как можно меньше 

стека.
Не должна содержать вызовы API-

функций, кроме предназначенных для вы-
зова из обработчика прерывания (то есть 
чьи имена заканчиваются на FromISR или 


Достарыңызбен бөлісу:
1   ...   86   87   88   89   90   91   92   93   ...   129




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

    Басты бет