You are here

Уведомления в качестве почтового ящика

Source: https://www.freertos.org/RTOS_Task_Notification_As_Mailbox.html

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


[Task Notifications - Уведомления]

RTOS Task Notifications Used As Light Weight Mailbox - Уведомления в качестве почтового ящика

Уведомления могут быть использованыдля передачи данных в задачу RTOS, но с определёнными ограничениями по сравнению с очередями RTOS, а именно:

  1. Только 32-битные величины могут быть переданы (не более 32 бит?).
  2. Значение сохраняется в поле уведомления задачи, поэтому в каждый момент времени может храниться только одно значение.

Следовательно фраза "легковесный почтовый ящик" предпочтительнее, чем фраза "легковесная очередь". И поле уведомления задачи хранит значение почтового ящика.

Данные передаются в задачу вызовом функций API xTaskNotify() и xTaskNotifyFromISR() с параметром eAction установленным в значение eSetValueWithOverwrite или eSetValueWithoutOverwrite. Если eAction установлен в eSetValueWithOverwrite, то значение в поле уведомления задачи-получателя будет обновлено даже если уведомление уже было отправлено. Если же eAction установлено в eSetValueWithoutOverwrite, то значение уведомления будет обновлено только если у задачи-получателя нет ожидающего уведомления. Т.е. чтобы обновить значение, задача-получатель должна сначала обработать предыдущее уведомление.

Задача может прочитать предназначенное ей уведомление вызовом xTaskNotifyWait().

Примеры

Примеры использования смотрите в документации на упоминаемые в тексте статьи функции API.

Похожие страницы

Hobby's category: