Похоже да, спасибо! Придётся разбираться, почему не работает и будучи определено глобально? Стек по настройкам CubeMX, вроде, не меньше размеров проблемных переменных. Но и не сильно больше. Почему в *.map не пишется теперь понятно.
Обидно, что с микрочиповским XC16 было больше ошибок. Например, на этапе компиляции предупреждение или даже ошибка, что стэка не хватает. А тут молча - перекрытие более чем на 50% размера.
Правильно понимаю, что переменные в main() не статические, то есть память выделяется в стеке?
Кстати, да, это объясняет, почему с оптимизацией наблюдал неадекватные залёты исполнения из-за повреждения сохранённого в стек программного счётчика.