Когда запускаю тактирование без PLL от встроенного генератора HSI - 16Mhz, работает правильно.
А когда включаю PLL, функция SystemCoreClockUpdate() возвращает все равно значение 16MHz, хотя реальная частота 32MHz.
Работает только если самому прописать SystemCoreClock = 32000000 перед вызовом SysTick_Config.
Код
RCC_Init();
SystemCoreClockUpdate();
SysTick_Config(SystemCoreClock/1000);//TO=1ms
Код
void RCC_Init(void)
{
RCC_HSICmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
FLASH->ACR=FLASH_ACR_ACC64;
FLASH->ACR|=FLASH_ACR_LATENCY;
FLASH->ACR|=FLASH_ACR_PRFTEN;
RCC_PLLConfig(RCC_PLLSource_HSI, RCC_PLLMul_4, RCC_PLLDiv_2);
RCC_PLLCmd(ENABLE);//Включаем PLL
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
RCC_HSEConfig(RCC_HSE_OFF);
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET);
}
{
RCC_HSICmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
FLASH->ACR=FLASH_ACR_ACC64;
FLASH->ACR|=FLASH_ACR_LATENCY;
FLASH->ACR|=FLASH_ACR_PRFTEN;
RCC_PLLConfig(RCC_PLLSource_HSI, RCC_PLLMul_4, RCC_PLLDiv_2);
RCC_PLLCmd(ENABLE);//Включаем PLL
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
RCC_HSEConfig(RCC_HSE_OFF);
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET);
}