为了降低功耗,我把内部系统时钟改为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) { 主运行程序; } } |
RE:改动内部系统时钟出问题,求助?
RE:改动内部系统时钟出问题,求助?
RE:改动内部系统时钟出问题,求助?
1、利用ST官网给出的EXCEL表格式的时钟配置工具进行修改。优点:
可以实现任意时钟修改和内部PLL设置,无需关心system_stm32fXXX.C
2、直接修改system_stm32fXXX.C时钟配置。前提是弄清楚时钟架构。
你想要8MHZ系统时钟,就采用HSE,PLL=1,就达到目的了。
RE:改动内部系统时钟出问题,求助?
RE:改动内部系统时钟出问题,求助?
不能简单的SysTick_Config的入参