改动内部系统时钟程序进入到while(1)时间很长

2019-07-14 13:32发布

为了降低功耗,我把内部系统时钟改为8M:
// /* PLL configuration = (HSI(~8MHz)/2) * 12 = ~48 MHz */
// RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
// RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_Div2 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL12);

/* PLL configuration = (HSI(~8MHz)/2) * 2 = ~8 MHz */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_Div2 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL2);


遇到的问题是:程序进入到while(1)时间很长,约2秒。调试发现这要系统滴答时钟有关系,请问这是在哪里出的问题??
int main(void)
{
unsigned int uiStatus;
uint32_t SystemCoreClock_1 = 8000000;
// uint8_t i;        

SysTick_Config(SystemCoreClock_1 / 1000); //1ms

/* System Config */
Sys_CLK_Config();

/* MSR Init */
MSR_vInit();   


。。。。。。(此处省略)
while(1)
{
  主运行程序;
}

}
0条回答

一周热门 更多>