You are here

vQueueAddToRegistry

Перевод может содержать ошибки. Читайте первоисточник: vQueueAddToRegistry()

Назад: [xQueuePeekFromISR()] Вверх: [ИПП: Очереди] Вперёд: [vQueueUnregisterQueue]

 

vQueueAddToRegistry()

Функция объявляется в файле queue.h

void vQueueAddToRegistry
    (
        QueueHandle_t   xQueue,   
        char            *pcQueueName,
    );

Функция назначает очереди имя и добавляет её в реестр.

Имя - это просто текстовая строка, используемая для облегчения отладки. Т.е. если отладчик поддерживает ядро FreeRTOS, то во время отладки будет отображаться состояние очередей, добавленных в реестр.  Поскольку реестр очереди хранит только указатель на строку, строка должна быть глобальной, а ещё лучше располагаться в ПЗУ/ЭСПЗУ. И разумеется эта строка не может располагаться в стеке.

У реестра очередей два предназначения, и оба они связаны с отладкой, если отладчик предоставляет такую возможность.

  • Реестр позволяет связать текстовое имя с очередью для легкой идентификации очереди в графическом интерфейсе отладчика.
  • Реестр содержит информацию, необходимую отладчику для поиска каждой зарегистрированной очереди и семафора.

Реестр очередей не имеет смысла, если отладчик не поддерживает отладку ядра FreeRTOS.

Параметр configQUEUE_REGISTRY_SIZE в файле FreeRTOSConfig.h определяет количество очередей и семафоров, которые могут быть одновременно внесены в реестр. Добавлять в реестр следует только те очереди и семафоры, состояние которых вы хотите контролировать в отладчике.

Параметры

xQueue Хэндлер очереди, которую необходимо добавить в реестр.
pcQueueName Указатель на строку, содержащую имя, назначаемое очереди.

Возвращаемое значение

Отсутствует.

Пример использования:

void vAFunction( void )
{
    QueueHandle_t xQueue;

    /* Создаём очередь достаточно большую, чтобы содержать 10 элементов типа char. */
    xQueue = xQueueCreate( 10, sizeof( char ) );

    /* Если отладчик поддерживает ядро FreeRTOS, мы можем назначить
       очереди имя и добавить её в реестр. Тогда очередь будет видна в отладчике. */
    vQueueAddToRegistry( xQueue, "AMeaningfulName" );
}
Hobby's category: