Может так вопрос будет понятнее:
===========================================================
В случае тактирования от PLL (а PLL от внешнего кварцевого резонатора (HSE))
1.Предочистка делителя для HSE
Код
RCC->CFGR2 &= ~RCC_CFGR2_PREDIV1;
2.Делить частоту HSE на 1
Код
RCC->CFGR2 |= RCC_CFGR2_PREDIV1_DIV1;
3.Источником сигнала для PLL выбран HSE
Код
RCC->CFGR |= RCC_CFGR_PLLSRC;
4.Отключить генератор PLL
Код
RCC->CR &= ~RCC_CR_PLLON;
5.Очистить PLLMULL
Код
RCC->CFGR &= ~RCC_CFGR_PLLMULL;
6.Коэффициент умножения = 2
Код
RCC->CFGR |= RCC_CFGR_PLLMULL2;
7.Включить генератор PLL
Код
RCC->CR |= RCC_CR_PLLON;
8.Ожидание готовности PLL
Код
while((RCC->CR & RCC_CR_PLLRDY)==0) {}
9.Очистка битов выбора источника тактового сигнала
Код
RCC->CFGR &= ~RCC_CFGR_SW;
10.Выбрать источником тактового сигнала PLL
Код
RCC->CFGR |= RCC_CFGR_SW_PLL;
11.Ожидание переключения на PLL
Код
while((RCC->CFGR&RCC_CFGR_SWS)!=0x08){}
===========================================================
В случае тактирования от внешнего кварца (HSE)
1.Включить генератор HSE
Код
RCC->CR |= RCC_CR_HSEON;
2.Ожидание готовности HSE
Код
while((RCC->CR & RCC_CR_HSERDY)==0)
3.Очистка битов выбора источника тактового сигнала
Код
RCC->CFGR &= ~RCC_CFGR_SW;
4.Выбрать источником тактового сигнала генератор HSE
Код
RCC->CFGR |= RCC_CFGR_SW_HSE;
===========================================================
В случае тактирования от внутреннего RC-генератора (HSI) без PLL
1.Включить генератор HSI
Код
RCC->CR |= RCC_CR_HSION;
2.Ожидание готовности HSI
Код
while((RCC->CR & RCC_CR_HSIRDY)==0) {}
3.Очистка битов выбора источника тактового сигнала
Код
RCC->CFGR &= ~RCC_CFGR_SW;
4.Выбрать источником тактового сигнала генератор HSI
Код
RCC->CFGR |= RCC_CFGR_SW_HSI;
===========================================================
И при настройках на одинаковые частоты тактирования (во всех трех случаях должно быть 8 МГц) у меня получаются разные временные задержки.
Что я делаю не так?