Леонид Иванович писал(а):
Менять можно. Но для этого не требуется очищать все эти регистры. И вряд ли кто-то это будет делать вызовом SystemInit(), потому что она не содержит никаких параметров тактирования (все задано константами). Так что Ваш ответ мимо. Кто идиот - пока не ясно.
Во первых сначала переходим на HSI и сбрасываем все настройка PLL и конфигурации по дефолту . Объяснить зачем сие ?
Затем вызывается SetSysClock(); Которая и устанавливает нужный источник тактирования
Вынужден в очередной раз Вас просить выключить дурака(AVR) .
Здесь естественно не универсальная функция переключения тактирования ,
а всего лишь настройка на один источник с одной конфигурацией и повторюсь :
Сгенерированно скриптом
Но и при варианте с переключением частоты , процедура выглядела примерно так же - сброс на HSI и дефолт и только затем установка других значений .
Леонид Иванович писал(а):
Еще насчет стандартной функции включения тактирования: запускаю программу, всё работает. Птом выдергиваю кварц из панельки, программа продолжает работать, но неправильно. такое меня решительно не устраивает! Что делат
Снова выключить AVR .
А Вы в AVR такое частенько проделывали ?

Ну и как ?
Настройки по дефолту HSE - PLL включен , HSI - PLL выключен .
При аварии HSE , тактирование происходит от HSI напрямую , без PLL .
Сие кстати ответ почему при переключении частот сбрасывают на HSI и дефолт .
Для Вашей хотелки - надо задействовать CSS .
ЛИ , предлагаю перенести обсуждение на казус
http://kazus.ru/forums/forumdisplay.php?f=34 , Вы не против ?