STM32F401的RCC时钟配置

需要使用STM32F401的大内存特性,买了1批STM32F401CCU6. QFN48封装的。随便翻了一下PDF,第一感觉和F103的48脚封装差不太多,于是将F103的板子改了个QFN48的封装就打样了。。。

收到板子后,直接焊上F401,我用的是8M晶振,调试,发现频率上不去。最高能稳定在60M左右,在64M偶尔能工作。

在main.c中的RCC配置:

(因为SystemInit的配置较低,能跑起来,需要重新配置时钟在72M,文档说最高能84M)

void RCC_MyConfig(void)
{
    RCC_DeInit();                                                              //@1
    RCC_HSEConfig(RCC_HSE_ON);                                   //打开外部时钟
    
    if(RCC_WaitForHSEStartUp() == SUCCESS)                  //等待外部时钟成功启动
    {
 			
        RCC_HCLKConfig(RCC_SYSCLK_Div1);                          //HCLK(AHB)时钟为系统时钟1分频
        
        RCC_PCLK1Config(RCC_HCLK_Div8);                            //PCLK(APB1)时钟为HCLK时钟8分频
        RCC_PCLK2Config(RCC_HCLK_Div2);                            //PCLK(APB2)时钟为HCLK时钟2分频
  
        
        RCC_PLLConfig(RCC_PLLSource_HSE, 8, 288, 4, 6);     //PLL时钟配置,外部晶振为8MHz,系统配置为8/8*336/4 =84MHz usb=336/7=48
        
        RCC_PLLCmd(ENABLE);                                               //开启PLL时钟,并等待PLL时钟准备好
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);      //选择PLL时钟为系统时钟
       
        while(RCC_GetSYSCLKSource() != 0x08);                      //Wait till PLL is used as system clock source
    }
}

上述代码无论如何无法启动,将RCC_HCLKConfig(RCC_SYSCLK_Div1);  改为DIV2可以启动,但主频慢多了,通过调整倍频,发现最高可以稳定跑到60M上下。于是不解。

问供应商,说芯片肯定是原装的。

于是各种加电容,改善电源,方法都用遍了,还是不行,正准备放弃时,浏览文档突然发现:

STM32F401的RCC时钟配置_第1张图片

这不是我画的PB11吗,哪里去了?看一看VCAP_1是什么?

STM32F401的RCC时钟配置_第2张图片

STM32F401的RCC时钟配置_第3张图片

到这里才恍然大悟,原来PB11在48脚的IC中是不存在的,取而代之的是pwr regulator这个功能脚,赶紧找个106的电容焊上,启动,一切都安静了。。。

 

你可能感兴趣的:(单片机开发)