Во первых, вы должны знать, что тактирование любой периферии
включается через регистры группы RCC с суффиксом ENR (Enable
Register). Следующая запись эквивалентна вашей: RCC->AHB2ENR = RCC->AHB2ENR | RCC_AHB2ENR_SRAM1EN | RCC_AHB2ENR_SRAM2EN | RCC_AHB2ENR_SRAM3EN;
Дока на чип говорит, что значение регистра RCC->AHB2ENR после ресета 0, а значит и тактирование памяти отключено. Соответственно, если вы пихаете секцию bss в в эти области памяти, то их необходимо затактировать сразу после входа в ResetHandler. Иначе словите BusFault
"не могу инициализировать нулями секцию .bss" - звучит бредово, компилятор ничего нигде не инициализирует, может только запихнуть переменные в нужный диапазон адресов, обычно bss или data, к тому же F7 умеет невыровненный доступ к памяти. Четное/нечетное число элементов значения не имеет, линкер все равно сделает выравнивание по 4 байта. Скорее всего запорот скрипт линкера, он не может впихнуть все в секцию