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



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

использование очередей 
в обработчиках прерываний
Как было показано выше, семафоры пред-
назначены для передачи факта наступления 
события между задачами и прерываниями. 
Очереди же можно использовать как для пе-
редачи событий, так и для передачи данных.
Ранее [2, КиТ № 6] мы говорили об API-
ф у н к ц и я х д л я р а б о т ы с о ч е р е д я м и : 
xQueueSendToFront()xQueueSendToBack() 
и xQueueReceive(). Использование их вну-
три тела обработчика прерывания приведет 
к краху программы. Для этого существу-
ют версии этих функций, предназначен-
ные для вызова из обработчиков пре-
рываний: xQueueSendToFrontFromISR()
x Q u e u e S e n d T o B a c k F r o m I S R ( ) 
и xQueueReceiveFromISR(), причем вы-
зов их из тела задачи запрещен. API-
ф у н к ц и я x Q u e u e S e n d F r o m I S R ( )  я в -
ляется полным эквивалентом функ-
ции xQueueSendToBackFromISR().
Функции xQueueSendToFrontFromISR()
xQueueSendToBackFromISR() служат для запи-
си данных в очередь и отличаются лишь тем, 
что первая помещает элемент в начало очере-
ди, а вторая — в конец. В остальном их поведе-
ние идентично.
Рассмотрим их прототипы:
portBASE_TYPE xQueueSendToFrontFromISR( xQueueHandle 
x Q u e u e , v o i d * p v I t e m T o Q u e u e p o r t B A S E _ T Y P E 
*pxHigherPriorityTaskWoken );
portBASE_TYPE xQueueSendToBackFromISR( xQueueHandle 
x Q u e u e , v o i d * p v I t e m T o Q u e u e p o r t B A S E _ T Y P E 
*pxHigherPriorityTaskWoken );
Аргументы и возвращаемое значение:
1. xQueue — дескриптор очереди, в которую 
будет записан элемент. Дескриптор очере-
ди может быть получен при ее создании 
API-функцией xQueueCreate().
2. pvItemToQueue — указатель на элемент, ко-
торый будет записан в очередь. Размер эле-
мента зафиксирован при создании очереди, 
так что для побайтового копирования эле-
мента достаточно иметь указатель на него.
3. pxHigherPriorityTaskWoken — значение 


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




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

    Басты бет