Приоритет Freertos

Я пытаюсь реализовать FreeRTOS с 3 задачами.

  1. написать по адресу х
  2. читать записанные данные с адреса х
  3. мигать светодиодом

Без задачи 3 я реализовал задачи чтения и записи самостоятельно, назначив более высокий приоритет для задачи чтения, и она работает хорошо. Но когда я назначаю светодиодную задачу (задача 3) с наименьшим приоритетом, мой светодиод мигает, а задачи записи и чтения не работают должным образом.

Кто-нибудь может объяснить причину этого?

Кроме того, я хотел бы выполнять задачи записи-чтения параллельно с заданием led (с тем же приоритетом).

Пожалуйста, помогите мне осуществить это.

3 ответа

Предоставленная вами информация очень мала и неполна, поэтому могут возникнуть многочисленные проблемы. Я изучаю FreeRTOS, поэтому я не эксперт. На мой взгляд, я чувствую, что данные по адресу x становятся поврежденными (из-за упреждения задач), поэтому задачи записи и чтения не работают должным образом. Вам необходимо реализовать Mutex или двоичный семафор для взаимного исключения адреса x.

ПРИМЕЧАНИЕ: в freeRTOS нет такого понятия, как параллельное выполнение.

Попробуйте дать одинаковый приоритет всем трем задачам с взаимным исключением

Вам необходимо предоставить больше информации.

Во-первых, для задач 1 и 2 вам необходимо использовать мьютекс для разделения ресурсов между задачами. FreeRTOS Mutexes

Поскольку Задача 2 зависит от Задачи 1, вы можете установить для них одинаковый приоритет и сделать так, чтобы Задача 1 помечала Задачу 2, когда она будет выполнена. Задача 2 может бесконечно ждать, пока не будет установлен флаг из Задачи 1.

Что касается задачи 3, светодиод работает с интервалом? Или это тоже зависит от Задачи 1 или 2? Обычно вы можете установить для светодиода более низкий приоритет, и, поскольку он имеет больше времени во время включения и выключения, задачи 1 и 2 не должны быть затронуты.

Может быть, вы задерживаете светодиод, используя аппаратные задержки, а не задержки задач? Это может повлиять на производительность.

Другие вопросы по тегам