Работа с очередями
Теперь целесообразно рассмотреть кон-
кретные API-функции FreeRTOS для рабо-
ты с очередями. Все API-функции для ра-
боты с очередями используют переменную
типа xQueueHandle, которая служит в ка-
честве дескриптора (идентификатора) кон-
кретной очереди из множества всех очередей
в программе. Дескриптор очереди можно по-
лучить при ее создании.
Создание очереди
Очередь должна быть явно создана перед
первым ее использованием. API-функция
xQueueCreate() служит для создания оче-
реди, она возвращает переменную типа
xQueueHandle в случае успешного создания
очереди:
xQueueHandle xQueueCreate(unsigned portBASE_TYPE uxQueueLength,
unsigned portBASE_TYPE uxItemSize );
Ее параметры и возвращаемое значение:
uxQueueLength
•
— определяет размер оче-
реди, то есть максимальное количество
элементов, которые может хранить оче-
редь.
uxItemSize
•
— задает размер одного эле-
мента очереди в байтах, его легко получить
с помощью оператора sizeof().
Возвращаемое значение — дескриптор оче-
•
реди. Равен NULL, если очередь не создана
по причине отсутствия достаточного объема
памяти в куче FreeRTOS. Ненулевое значе-
ние свидетельствует об успешном создании
очереди, в этом случае оно должно быть со-
хранено в переменной типа xQueueHandle
для дальнейшего обращения к очереди.
При создании очереди ядро FreeRTOS выде-
ляет блок памяти из кучи для ее размещения.
Этот блок памяти используется как для хра-
нения элементов очереди, так и для хранения
служебной структуры управления очередью,
которая представлена структурой xQUEUE.
Получить точный размер структуры
xQUEUE для конкретной платформы и ком-
пилятора можно, получив значение следую-
щего выражения:
sizeof(xQUEUE)
При этом следует учесть, что структу-
ра xQUEUE используется ядром в собствен-
ных целях и доступа к этой структуре из тек-
ста прикладных исходных файлов (main.c
в том числе) изначально нет. Чтобы полу-
чить доступ к структуре xQUEUE, необходи-
мо включить в исходный файл строку:
#include “..\\queue.c”
Для платформы x86 и компилятора Open
Watcom (которые используются в учебных
программах) размер структуры xQUEUE со-
ставляет 58 байт.
Достарыңызбен бөлісу: |