stm32f030 使用16M晶体

   大部分的开发板都是用8M晶体,代码也是用的8M晶体配置.

一次开发过程中因为板子体积有限,选择了SMD3225的晶振,在LCSC检索发现8M的晶体比16M普遍贵3倍多。 所以将代码适配为16M.

 修改的地方只动了两个地方;
  1. static void SetSysClock(void)
    将以下代码
 /* PLL configuration = HSE * 6 = 48 MHz */
    //                                     PLL时钟源            HSE 分频器           PLL 倍频器
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
    
    //                HSE/PREDIV 作为PLL 输入时钟                 HSE不分频                  6倍频
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);

修改为

 /* PLL configuration = HSE * 6 = 48 MHz */
    //                                     PLL时钟源            HSE 分频器           PLL 倍频器
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
    
    //                HSE/PREDIV 作为PLL 输入时钟                 HSE不分频                  3倍频
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL3);
  1. void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
    函数中有用到 HSE_VALUE, 为了一致将
    宏定义
#if !defined  (HSE_VALUE)     
#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz*/
#endif /* HSE_VALUE */

修改为

#if !defined  (HSE_VALUE)     
#define HSE_VALUE    ((uint32_t)16000000) /*!< Value of the External oscillator in Hz*/
#endif /* HSE_VALUE */
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值