|
刚接触STM32不久,现在发现这样一个问题,在网上查了 也自己找了一只没找到原因 望大家帮帮忙
问题如下:我用的是STM32103CB,才用的是内部时钟,在非调试状态下正常上电系统不是每次都按照PLL后的时钟运行,导致这个
系统的时钟会出现很慢的情况。
RCC部分代码如下(望各位大侠帮忙指正)
void RCC_Configuration(void)
{
RCC_DeInit();//将RCC寄存器设置为缺省值
RCC_HSICmd(ENABLE);//打开内部高速时钟
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET)
{} //等待HSI准备好
if (1)
{
//设置HCLK(AHB时钟)=SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//PCLK1(APB1) = HCLK/2
RCC_PCLK1Config(RCC_HCLK_Div2);
//PCLK2(APB2) = HCLK
RCC_PCLK2Config(RCC_HCLK_Div1);
//FLASH时序控制
//推荐值:SYSCLK = 0~24MHz Latency=0
// SYSCLK = 24~48MHz Latency=1
// SYSCLK = 48~72MHz Latency=2
FLASH_SetLatency(FLASH_Latency_2);
//开启FLASH预取指功能
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//PLL设置 SYSCLK/2 * 16 = 4*16 = 64MHz
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);
//启动PLL
RCC_PLLCmd(ENABLE);
//等待PLL稳定
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
//系统时钟SYSCLK来自PLL输出
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//切换时钟后等待系统时钟稳定
while (RCC_GetSYSCLKSource()!=0x08);
}
}
}
|
|