ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
16 августа
1535839 Топик полностью
Nikolay_Po (14.08.2025 18:37, просмотров: 42) ответил AlexBi на Поскольку вы уже достаточно глубоко погрузились в проблему и обнаружили, что ваша задача пропадает из списка на пробуждение, наверное вам будет не сложно поставить точку останова на изменение ячейки памяти с вашей задачей в списке на пробуждение, обнаружить когда ее изменяют, т.е. убирают, и найти в чем причина.
Пока не дошёл до списка на пробуждение ядра. Смотрел лишь на указатель на задачу приёмника потока в параметрах самого потока. И оно затирается в ноль после постановки сообщения в очередь, на этапе формирования уведомления. 

Получается, что уведомление формируется и, так как уведомление пробуждающее задачу приёмника уже подано, задача убирается из параметров потока. И это может быть нормально - функция xStreamBufferReceive() впишет задачу приёмника в этот параметр потока снова, когда обнаружит, что данных в потоке больше нет.

Проблема в том, что при формировании уведомления, не выполняется возобновление задачи, находящейся в suspended.

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

https://forums.freertos.org/t/xstreambufferreceive-portmax-delay-task-moved-to-suspended-and-never-wakes-on-data/23723