各位好!
在使用STM32L151内部HSI作为系统晶振的时候,遇到一个问题,就是系统时钟配置完成之后,读取系统时钟频率一直是16M, 即使设置了倍频还是一样,
用过这个芯片的朋友帮忙看下,是我那里配置出来问题?谢谢大家了
/*********************************************************************************************************
** Function name : HSI_Configuration
** Input Para :
** Output Para :
** Created by : weiyuliang 魏玉良
** Created Date : 2016年06月30日
** Descriptions : 设置系统时钟为HSI
**
** -------------------------------------------------------------------------------------------------------
** Modified by :
** Modified Date :
** Descriptions :
**
** -------------------------------------------------------------------------------------------------------
**********************************************************************************************************/
void HSI_Configuration(void)
{
//RCC reset
RCC_DeInit();
//Enable HSI
RCC_HSICmd(ENABLE);
//wait HSI
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);
RCC_HSEConfig(RCC_HSE_OFF);
if(RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET )
{
while(1);
}
RCC_AdjustHSICalibrationValue(16);
FLASH_PrefetchBufferCmd(ENABLE);
FLASH_SetLatency(FLASH_Latency_1);
/* Power enable */
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
/* Select the Voltage Range 1 (1.8 V) */
PWR->CR = PWR_CR_VOS_1;
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
while (RCC_GetSYSCLKSource() != 0x04)
{
}
/* 设置AHB时钟=32 MHz */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 设置APB1时钟=32 MHz */
RCC_PCLK1Config(RCC_SYSCLK_Div1);
/* 设置APB2时钟=32 MHz */
RCC_PCLK2Config(RCC_SYSCLK_Div1);
/* 8M*4/2 = 32M */
RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_4, RCC_PLLDiv_2);
/* Enable PLL */
RCC_PLLCmd(ENABLE);
/* Wait till PLL is ready */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
}
/*********************************************************************************************************
** Function name : get_sys_clock_fre
** Input Para :
** Output Para :
** Created by : weiyuliang 魏玉良
** Created Date : 2016年06月30日
** Descriptions : 读取系统时钟频率
**
** -------------------------------------------------------------------------------------------------------
** Modified by :
** Modified Date :
** Descriptions :
**
** -------------------------------------------------------------------------------------------------------
**********************************************************************************************************/
void get_sys_clock_fre(void)
{
RCC_ClocksTypeDef get_rcc_clock;
/* 获取系统时钟 */
RCC_GetClocksFreq(&get_rcc_clock);
/* 输出 系统时钟频率 */
printf(" SYSCLK %d\n", get_rcc_clock.SYSCLK_Frequency);
printf(" HCLK %d\n" , get_rcc_clock.HCLK_Frequency);
printf(" PCLK1 %d\n" , get_rcc_clock.PCLK1_Frequency);
printf(" PCLK2 %d\n" , get_rcc_clock.PCLK2_Frequency);
}
|