STM32F103 使用外部16MHZ晶振总结

STM32F103官方库默认是8M晶振,改成 16M 3225-4Pin的晶振,需要对时钟配置做如下修改:
1、把stm32f10x.h中的HSE_VALUE宏定义改成16M

#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */

改成:

#define HSE_VALUE    ((uint32_t)16000000) /*!< Value of the External oscillator in Hz */

最终如下:

#if !defined  HSE_VALUE
 #ifdef STM32F10X_CL   
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
 #else 
  //#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
  #define HSE_VALUE    ((uint32_t)16000000) /*!< Value of the External oscillator in Hz */
 #endif /* STM32F10X_CL */
#endif /* HSE_VALUE */

2、修改system_stm32f10x.c 文件中的 SetSysClockTo72函数,将HSE先2分频后再倍频,
变成 PLLCLK = HSE /2 * 9 = 72 MHz */ 16 /2 *9 = 72M

 RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
 RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);

改成

 RCC->CFGR &= (uint32_t)((uint32_t) ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
 RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL9);

经过这两步修改后,即可正常工作。
注:在调试的时候出现串口在256000波特率时乱码,原因是RS232转换芯片不支持这么高的波特率

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值