下面我们就通过简单的三个步骤就可以让你随意的使用4—16MHz之内任何频点的晶振,我们以STM32F10x_StdPeriph_Lib_V3.4.0为例说明。 第一步,打开stm32f10x.h,将
#define HSE_VALUE ((uint32_t)8000000) 修改为:
#define HSE_VALUE ((uint32_t)12000000)
第二步,打开system_stm32f10x.c,修改PLL参数,将
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_PLLMULL6); 至此,原文件已经修改完成,如果你想将主频修改至其他频率,请自行修改。但是,到现在,如果您直接编译调试的话,就会出现上文所说的USART的波特率不正确,Systick走时不准等问题,原因就是我们需要进行第三部的修改,这个修改不是在原文件中,而是在编译环境中。我们已Keil MDK为例说明。
第三步,打开你已经建立的STM32工程,选择Projects-〉Options for target ***,找到Target标签,你会发现,外接的晶振默认还是8MHz,我们将外接的晶振参数修改为12MHz,确定保存,再编译,调试,你就会发现,所有的参数都回归的正常轨道,设置波特率为9600,它也不会跑到14400,设置Systick为1ms中断,它不会1.5ms中断。
上一篇:STM32学习笔记:基础例子
下一篇:GPIO_Speed_50MHz的值是多少
推荐阅读最新更新时间:2024-11-06 11:52
设计资源 培训 开发板 精华推荐
- LT1511,具有输入电流限制的可编程恒流 / 恒压电池充电器
- 使用 NXP Semiconductors 的 UBA3077HN/1,518 的参考设计
- LT1302、2V 至 12V/120mA 升压型 DC/DC 转换器的典型应用电路
- LUNA:用于构建、分析和破解 USB 设备的多功能工具
- ADA4000-1ARZ运算放大器缓冲网络配置的典型应用电路
- 使用 BFP405 的 1.9GHz 低噪声放大器
- LTC2946IMS-1 电源、电荷和能量监视器在 -48V 恶劣环境中的典型应用,使用 INTVCC 并联稳压器来承受 200V 瞬态
- 使用 ROHM Semiconductor 的 BU4945 的参考设计
- 18650 触摸 调光 充放电一体化
- LT1372HVCN8 5V 至 12V 升压转换器的典型应用