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


*pxHigherPriorityTaskWoken



Pdf көрінісі
бет69/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   65   66   67   68   69   70   71   72   ...   129
Kurniz

*pxHigherPriorityTaskWoken устанавли-
вается равным pdTRUE, если существует 
задача, которая «хочет» прочитать данные 
из очереди, и приоритет у нее выше, чем 
у задачи, выполнение которой прервало 
прерывание. Если таковой задачи нет, то 
значение *pxHigherPriorityTaskWoken оста-
ется неизменным. Проанализировав зна-
чение *pxHigherPriorityTaskWoken после 
выполнения xQueueSendToFrontFromISR()
или xQueueSendToBackFromISR(), можно 
сделать вывод о необходимости принуди-
тельного переключения контекста в конце 
обработчика прерывания. В этом случае 
управление сразу перейдет разблокирован-
ной высокоприоритетной задаче.
4. Возвращаемое значение — может прини-
мать 2 значения:
pdPASS — означает, что данные успешно 
записаны в очередь.
errQUEUE_FULL — означает, что данные 
не записаны в очередь, так как очередь 
заполнена.
API-функция xQueueReceiveFromISR() 
служит для чтения данных с начала очереди. 
Вызываться она должна только из обработ-
чиков прерываний.
Ее прототип:
portBASE_TYPE xQueueReceiveFromISR( 
xQueueHandle pxQueue, 
void *pvBuffer, 
portBASE_TYPE *pxTaskWoken 
);
Аргументы и возвращаемое значение:
1. xQueue — дескриптор очереди, из которой 
будет считан элемент. Дескриптор очереди 
может быть получен при ее создании API-
функцией xQueueCreate().
2. pvBuffer — указатель на область памя-
ти, в которую будет скопирован элемент 
из очереди. Объем памяти, на которую 
ссылается указатель, должен быть не мень-
ше размера одного элемента очереди.
рис. 9. Обработка быстро следующих событий




Достарыңызбен бөлісу:
1   ...   65   66   67   68   69   70   71   72   ...   129




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

    Басты бет