Может быть кто знает, в чем может быть затыка.
Камешек STM32F103C8T6. Собираю проект с нуля в Keil5. Структуры проекта собрана. Подключены файлы CMSIS библиотеки. Добавлен Startup для данной модели.
Пути к инклудам прописаны. Настройки компилятора, линкера в "Options for Target..." и прочего- аналогичны тем, что в проектах, созданных Кубом. Оптимизация отключена.
Тактирование, проты ввода-вывода, прерывания-все как положено...
Все собирается без ошибок и заливается в МК. Код, написанный в Main-е работает (светодиодом управляю, кнопки читаю и т.п.). Во только не работают обработчики прерываний! Пробовал писать их и в main.c, и в отдельном файле.
Если запускаю кубовский проект в отладку, точка выполнения встает в начало функции Main(), что логично.
А вот в новом- точка выполнения застревает где-то в ассемблеровском startup-е, на строке "LDR R0, =SystemInit".
Затем наблюдаются необъяснимые чудеса. Если в запущенном режиме Debug запустить выполнение кода (F5)- обработчики начинают жить (я для простоты сделал моргание светодиодом на борту платы по прерыванию таймера1).
Отключаю режим отладки, жму Reset- все затыкается и не работает.
Платы пробовал разные- bluepill, STM323 Smart.
Причем есть пара проектов собранных ранее с нуля- там прерывания чудесным образом работают (хотя раньше не работали и не понятно, по какому тычку они завелись).
Все библиотеки в них- одни и те же, стартап тот же.
Очень хотелось бы найти эту загадочную настройку, из за которой то работает то нет, ведь с Кубовскими проектами таких чудес не возникает.


