wspytu学习取得进步,分享获得交流
获得 9 次赞
帮助过8人
外部晶体振荡器HSE=8Mhz,更改system_stm32f10x.c文件中SetSysClockTo72函数,调整PREDIV1SCR时钟源设置为HSE, 方便调整主时钟晶振测试引脚,避免PREDIV1SCR时钟源来自PLL2倍频 stm32f10x.h文件中,有定义HSE_VALUE,更改互联型默认晶振值8M,避免串口初始化波特率和实际值不符合,串口输出数据错误// #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ //HSE=8MHZ PLL2CLK= HSE 8MHZ/2*10=40mhz,更改PLL2分频和倍频值 //PREDIV1CLK = PLL2 / 5 = 8 MHz RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV2 | RCC_CFGR2_PLL2MUL10 | RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5); /* Enable PLL2 */ RCC->CR |= RCC_CR_PLL2ON; /* Wait till PLL2 is ready */ while((RCC->CR & RCC_CR_PLL2RDY) == 0) { } /* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */ RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLMULL9);