ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
16 августа
1535672 Топик полностью
EmbedProg (14.08.2025 04:47, просмотров: 7) ответил Nikolay_Po на Завёл тему на форуме FreeRTOS
Перечитайте еще раз документацию на xStreamBufferReceive() где сразу же сверху написано NOTE: Судя по вашему коду выполянется vTaskSuspendAll(), но это ничего не дает и не является сериализацией доступа ("последовательнизацией" для записывающих потоков). Судя по всему, xStreamBuffer не потокобезопасный и у вас просто "ломается", приходит во внутреннее неконсистентное состояние. И там же, прямо написано как нужно сделать чтобы он работал нормально. "One way to achieve such 

serialization in single core or SMP kernel is to place each API call inside a critical section and use a block time of 0." Сфокусируйтесь на этом. vTaskSuspendAll() это не то. Кстати, подобная сериализация приведет к тому, что печать из потоков будет неконкурентная. Но для логгирования это требуемое поведение.

Ссылка на документацию.

https://www.freertos.org/Documentation/02-Kernel/04-API-references/08-Stream-buffers/05-xStreamBufferReceive