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



Pdf көрінісі
бет109/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   105   106   107   108   109   110   111   112   ...   129
Kurniz

FROM_ISR() является первым в обработчи-
ке прерывания. Если же в обработчике пре-
рывания происходит несколько вызовов 
crQUEUE_SEND_FROM_ISR() (несколь-
ко элементов помещается в очередь), 
то аргумент xCoRoutinePreviouslyWoken 
следует устанавливать в значение, кото-
рое было возвращено предыдущим вы-
зовом crQUEUE_SEND_FROM_ISR().
Этот аргумент введен для того, чтобы 
в случае, когда несколько сопрограмм ожи-
дают появления данных в очереди, только 
одна из них выходила из блокированного 
состояния.
4. Возвращаемое значение. Равно pdTRUE
если в результате записи элемента в оче-
редь разблокировалась одна из сопрограмм. 
В этом случае необходимо выполнить пере-
ключение на другую сопрограмму после 
выполнения обработчика прерывания.
Чтение элемента из очереди (которая ис-
пользуется только в сопрограммах) из обра-
ботчика прерывания осуществляется с по-
мощью API-функции crQUEUE_RECEIVE_
FROM_ISR(). Ее прототип:
portBASE_TYPE crQUEUE_RECEIVE_FROM_ISR(
xQueueHandle pxQueue,
void *pvBuffer,
portBASE_TYPE * pxCoRoutineWoken
)
Аргументы и возвращаемое значение:
1. pxQueue — дескриптор очереди, в которую 
будет записан элемент. Дескриптор очере-
ди может быть получен при ее создании 
API-функцией xQueueCreate().
2. pvItemToQueue — указатель на область па-
мяти, в которую будет скопирован элемент 
из очереди. Объем памяти, на которую 
ссылается указатель, должен быть не мень-
ше размера одного элемента очереди.
3. pxCoRoutineWoken — указатель на пере-
менную, которая в результате вызова 
crQUEUE_RECEIVE_FROM_ISR() примет 
значение pdTRUE, если одна или несколько 
сопрограмм ожидали возможности поме-
стить элемент в очередь и теперь разбло-
кировались. Если таковых сопрограмм нет, 
то значение *pxCoRoutineWoken останется 
без изменений.
4. Возвращаемое значение:
pdTRUE, если элемент был успешно про-
читан из очереди;
pdFALSE — в противном случае.


Достарыңызбен бөлісу:
1   ...   105   106   107   108   109   110   111   112   ...   129




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

    Басты бет