TOG 0 22 августа Опубликовано 22 августа · Жалоба Товарищи, работаю с STM32H743 под FreeRTOS. Припух с простейшей задачкой: Нужно стереть одну страницу флэш-памяти МК, а потом прочитать ее. Включен кэш данных и кэш инструкций. ErasePage(); // Стереть страницу флэш-памяти МК ReadPage(&Data); // Прочитать Если проходить пошагово отладчиком, то страница стирается и потом функция ReadPage читает FFFFFFF... как и должно быть. А если отпустить в свободный полет, то функция ReadPage читает старые данные, которые там были до стирания. Пробовал "taskENTER_CRITICAL", "taskEXIT_CRITICAL"- не помогло. Пробовал "__ISB(), "__DSB(), __DMB()" - всякие барьеры синхронизации. Не очень я понимаю как они работают, но и это мне не помогло. Что посоветуете ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 22 августа Опубликовано 22 августа · Жалоба Решил. После стирания поставил SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize) Теперь все корректно читает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться