Разбираюсь и практикую работу с flash.
Камень - stm32f407vet6.
Создал проект(пустой) в cubeMX. В кубе установил частоту тактирования от кварца, на максимум(168Мгц), сгенерировал проект.
Прохожу под отладкой по программе и мониторю регистры FLASH.
При выполнении функции "HAL_Init()" в регистр FLASH_ACR устанавливается значение 0x00000700(то есть включается кеш данных, кеш команд и буфер предварительной выборки, при этом состояния ожидания равно 0). Здесь все понятно, ведь при установки частоты тактирования на максимум, для ускорения нужно включить буфер предварительной выборки, что бы было корректное считывание инструкций с flah. ведь flah работает на меньшой скорости нежели 168мгц.
Далее выполняется функция "SystemClock_Config()" и в ней включаются состояния ожиданий(5 ожиданий). Вопрос, зачем здесь включается состояния ожидания?
На сколько я знаю, состояния ожидания необходимо включать только в том случаи, когда устанавливается частота тактирования на максимум(168мгц) и буфер предварительной выборки отключен. Но если буфер предварительной выборки включен то состояния ожиданий не нужны, ведь благодаря буферу, при частоте 168мгц, считывания данных будет уже корректным.


