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上下。于是不解。

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

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

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

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csaaa2005

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值