Мне тоже это бросилось в глаза, особенно когда запускал дебаггер и все работало на порядок быстрей, но строчка из конфига для линкера
//************************************************
// __ramfunc code copied to and executed from RAM.
//************************************************
-Z(DATA)CODE_I=50000000-50007FF
натолкнуло меня на неверную мысль, о том, что написанный мною код после запуска контроллера будет копироваться из флэш в СРАМ и выполняться оттуда. Про то что нужно перед функцией ставить __ramfunc, чтобы она загружалась с СРАМа я и не догадывался.
- На счет того чтобы запустить программу с внешней памяти: интересный вариант - туда можно будет запихнуть вообще весь код!
- А по поводу отключения прерываний: так оно и было, я тестировал все без прерываний, просто сам пример кода выложил как есть
- Говоря о настройках частоты работы контроллера, то там все правильно, и уже много раз проверено, ведь от частоты ядра и CCLK и HCLK, завиясят такие параметры как например скорость передачи по UART, а он у меня работает правильно - притом пользуюсь максимальной скоростью передачи в 921600
- А во сколько раз быстрее или медленнее выполняется код из разных типов памяти я скажу позже, когда сделаю замеры частоты на осцилографе, который сейчас у меня не под рукой