STM32F103外部晶振8MHZ改为16MHz的使用

STM32F103外部晶振8MHZ改为16MHz的使用


目录


前言

最近使用别人的电路板编写软件,烧录程序后发现一直无法跑起来,一旦进行了时钟的初始化操作整个程序直接跑飞,估计肯定是时钟的问题。发现电路板采用16M的晶振而之前一直使用8M,将程序晶振程序修改为16M后就可以正常的运行了


一、修改标准函数库的方法

标准函数库目前已经不是主流了,但是有些老的项目移植会用

函数库的.h文件只要将.C下展开就可以找到

1、stm32f10x.h修改HSE_VALUE

将原来的HSE_VALUE值修改为
#define HSE_VALUE ((uint32_t)16000000)

2 、system stm32f10x.c的SetSysClockTo72()函数修改

注意这里是.C文件,16MHz需要先2分频,修改为

3、不同晶振的统一配置的方式

在之上的修改位置更改为以下代码

在.h文件加入以下宏配置

javascript 复制代码
// <h> 晶振源配置
// <8000000=> 8MHz外部晶振
// <12000000=> 12MHz外部晶振
// <16000000=> 16MHz外部晶振
#ifndef EXT_OSC_SOURCE
#define EXT_OSC_SOURCE 16000000
#endif

修改stm32f10x.h中的内容,如下

javascript 复制代码
#define HSE_VALUE    ((uint32_t)EXT_OSC_SOURCE) /*!< Value of the External oscillator in Hz */

修改system stm32f10x.c中的内容,如下

javascript 复制代码
#if EXT_OSC_SOURCE == 8000000
    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);
#elif EXT_OSC_SOURCE == 12000000
   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);
#else EXT_OSC_SOURCE == 16000000
	 RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                 RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL));
   RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);

4 、时间晶振修改

用到了RCC晶振的触发时间也需要修改

5、修改Target内晶振参数为16

二、修改Hal函数库的方法

当然可以直接通过CubeMX的时钟配置页面直接修改。

1.stm32f4xx_hal_conf.h修改HSE_VALUE

将原来的HSE_VALUE值修改为
#define HSE_VALUE 16000000U

2、修改main.c中的PLLM值为对应晶振的频率

我这里使用正点原子的函数,可以看到用的是x9,我们用16Mz只需要使用x4

修改后

这里是直接调用函数大致的调整了下,需要非常精确需要在HAL_RCC_OscConfig中设置参数


小记:

其他型号的stm芯片基本都是这样修改晶振的,也提醒了我在写程序前要检查下硬件的外部晶振,不一定是自己平时习惯的硬件。

相关推荐
崇山峻岭之间3 分钟前
单片机USB U盘实验
单片机·嵌入式硬件
点灯小铭18 分钟前
基于单片机的锅炉压力与温度监测报警系统设计
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
环境倒逼我学习19 分钟前
无人机地面站之第13章 Mission Planner 入门与界面总览
单片机·嵌入式硬件·无人机
大阳12329 分钟前
ARM.8(ADC,SPI)
单片机·嵌入式硬件·adc·spi
hoiii1871 小时前
基于 STM32 的标准遥控器架构与源码
stm32·嵌入式硬件·架构
少年、潜行1 小时前
STM32 ISP 升级体验
stm32·嵌入式硬件·isp升级·系统编程区域
杨连江1 小时前
一种三模式可调气隙式双侧定子滑移可变磁通轴向永磁电机
单片机·嵌入式硬件
Aaron158811 小时前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理
foundbug99911 小时前
STM32 睡眠模式测试程序
stm32·单片机·嵌入式硬件
wxmtwfx13 小时前
littlefs 源码分析
单片机·littlefs·嵌入式文件系统