Вступить в клуб →
средняявопросFreeRTOS: задачи, очереди и синхронизация

После добавления записи настроек во flash UART начал терять байты

Чтобы запись настроек не прерывали другие задачи, её обернули так:

taskENTER_CRITICAL();
flash_erase_sector(SETTINGS_SECTOR);   /* ~20 мс */
flash_write(SETTINGS_ADDR, &cfg, sizeof cfg);
taskEXIT_CRITICAL();

Во время сохранения приёмник UART на 115200 бод регистрирует ошибку переполнения (overrun), часть команд теряется. Почему и как исправить?

  • Секция маскирует прерывания; защитить мьютексом
  • Flash и UART конфликтуют на одной шине памяти
  • Критическая секция тормозит тик; поднять частоту
  • Увеличить стек задачи, которая пишет во flash

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела