Поведение ядра зависит от реализации. Flash не является неотъемлемой частью ядра ARM, и поэтому каждый поставщик реализует его по-своему. Как правило, во время процесса стирания / записи можно выполнить из ОЗУ, и выполнение не должно быть затронуто.
На STM32 я полагаю, что чтение из флэш-памяти происходит во время циклов стирания / записи. Это приведет к остановке работы ядра до завершения операции. Я полагаю, что с некоторыми конфигурациями флэш-памяти вы можете продолжать выполнять / читать флэш-память, и она остановится только при доступе к той части флэш-памяти, которую вы стираете / программируете.
Я использовал другие Cortex M, где вы должны выполнять из ОЗУ при изменении содержимого флэш-памяти, в противном случае вы столкнетесь с ошибкой шины (и, скорее всего, сбоем системы, если ваши обработчики ошибок шины / жесткого сбоя находятся во флэш-памяти). Некоторые микроэлементы с большим количеством флэш-памяти реализуют его как два независимых флэш-массива, и они, как правило, обеспечивают полный доступ к одному банку при работе с другим.
Вам нужно будет обратиться к документации по вашей конкретной части, чтобы увидеть ограничения выполнения при изменении содержимого флэш-памяти.