Старт ARM. RTOS часть 3-ая. Очереди.

Всем привет продолжаем мучать stm32f4(stm32f429i-disco) и FreeRTOS, сегодня речь пойдет об очередях и зачем они нужны во FreeRTOS. И так преступим. Во первых, очередь – структура данных с организацией доступа к элементам «первый пришёл — первый вышел» (FIFO, First In — First Out). Добавление элемента (принято обозначать словом enqueue — добавить в очередь) возможно лишь в конец очереди, взятие — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется. Во вторых, рассмотрим такую ситуацию, у нас есть переменная которая хранит массив объектов, и вдруг мы начали обращаться, с кажем из разных задач которые получают процессорное время, задача первая (будем абстрагироваться: D) ) отдает в эту переменную яблоки, а вторая задача отдает груши, если тех и тех много, происходит формирование гибридов грушо-яблоки. Или иной пример передавали «Неllo world!» одной задачей, а второй задачей передавали «Hi Mars!», тогда в итоги у нас может получиться «HellHi Mars», или что-нибудь похожее на данную строку. Да кончено в случае если вы используете вытесняющую(гибридную) многозадачность, а не кооперативную, в кооперативной можно обойтись и без очередей, так как там вы сами завершаете выполнение задачи и отдает управление планировщику. Использование очередей позволяет избежать некорректного обмена данных между задачами.
Что ж перейдем к примеру.

Вот таким нехитрым способом можно использовать очереди во FreeRTOS-е и красиво организовать обмен сообщениями между задачами. Полный example прилагаю. Всем пока! В следующий раз будет разбирать семафоры. 🙂
Firmware целиком

Отправить ответ

Оставьте первый комментарий!

Уведомлять о
avatar
wpDiscuz