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

news2025/1/13 2:57:42

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


目录

  • STM32F103外部晶振8MHZ改为16MHz的使用
  • 前言
  • 一、修改标准函数库的方法
    • 1、stm32f10x.h修改HSE_VALUE
    • 2 、system stm32f10x.c的SetSysClockTo72()函数修改
    • 3、不同晶振的统一配置的方式
    • 4 、时间晶振修改
    • 5、修改Target内晶振参数为16
  • 二、修改Hal函数库的方法
    • 1.stm32f4xx_hal_conf.h修改HSE_VALUE
    • 2、修改main.c中的PLLM值为对应晶振的频率


前言

最近使用别人的电路板编写软件,烧录程序后发现一直无法跑起来,一旦进行了时钟的初始化操作整个程序直接跑飞,估计肯定是时钟的问题。发现电路板采用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文件加入以下宏配置

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

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

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

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

#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芯片基本都是这样修改晶振的,也提醒了我在写程序前要检查下硬件的外部晶振,不一定是自己平时习惯的硬件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1105112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32F407的FreeRTOS学习笔记(1)——环境搭建

以前使用STM32单片机一直停留在逻辑开发以及前后台系统&#xff0c;而真正被广泛使用的则是RTOS。 前后台系统则是我们常用的&#xff0c;使用一个主循环许多的调用函数这些构成了后系统&#xff0c;利用中断进行异常处理则是前系统。 而RTOS则是将任务按照优先级排列&#xf…

怎么压缩图片?图片过大这样压缩变小

在日常生活中&#xff0c;我们常常会遇到需要上传或发送图片的情况&#xff0c;然而&#xff0c;很多时候图片的大小会成为问题&#xff0c;因为过大的图片可能会导致传输速度变慢&#xff0c;甚至无法上传。那么&#xff0c;如何将这些过大的图片压缩变小呢&#xff1f; 一、嗨…

【C++进阶之路】类型转换

文章目录 类型转换1.C语言的类型转换1.1整形提升1.2算术转换1.3强制类型转换 2.C类型转换2.1static_cast2.2reinterpret_cast2.3const_cast2.3dynamic_cast 总结 类型转换 1.C语言的类型转换 1.1整形提升 在写顺序表的插入函数时&#xff0c;我们的接口实现是这样的&#xf…

Confluence 自定义展示页面

1. 概述 Confluence 作为知识库可通过JS脚本方式&#xff0c;根据登录用户或用户组进行前端页面的自定义 2. 实现方式 Confluence →管理→自定义HTML 嵌入对应JS脚本&#xff0c;示例如下 <script type"text/javascript">jQuery(#footer).html(<div>…

UE5 Python脚本自动化Sequence Key帧

前言 码上1024了&#xff0c;给大家分享一个UE5的脚本小功能&#xff0c;UE5中Sequence动态Key功能&#xff0c;这样我们就可以根据我们的数据动态更新了&#xff0c;非常实用&#xff0c;适合刚入门或者小白&#xff0c;接下来我就把整个过程分享给大家。 过程 新建一个工程…

E049-论坛漏洞分析及利用-针对bwapp进行web渗透测试的探索

课程名称&#xff1a; E049-论坛漏洞分析及利用-针对bwapp进行web渗透测试的探索 课程分类&#xff1a; 论坛漏洞分析及利用 --------------------------------------------------------------------------------------------------------------------------------- 实验等…

用一段爬虫代码爬取高音质音频示例

以下是一个使用Reachability库和Objective-C编写的爬虫程序&#xff0c;用于爬取高音质的免费音频。通过https://www.duoip.cn/get_proxy的代码示例完美抓取数据。 #import <Foundation/Foundation.h> #import <Reachability/Reachability.h>interface AudioCrawle…

vue3学习(八)--- 组件相关

文章目录 全局组件批量注册全局组件 局部组件递归组件组件定义名称方式1.增加一个script 通过 export 添加name2.直接使用文件名当组件名3.使用插件 unplugin-vue-define-options 动态组件异步组件 一个 Vue 组件在使用前需要先被“注册”&#xff0c;这样 Vue 才能在渲染模板时…

从实时数据库转战时序数据库,他陪伴 TDengine 从 1.0 走到 3.0

关于采访嘉宾 在关胜亮的学生时代&#xff0c;“神童”这个称号如影随形&#xff0c;很多人初听时会觉得这个称谓略显夸张&#xff0c;有些人还会认为这是不是就是一种调侃&#xff0c;但是如果你听说过他的经历&#xff0c;就会理解这一称号的意义所在了。 受到教师母亲的影…

Mobpush厂商通道回执配置指南

为了帮助客户追踪和分析推送效果&#xff0c;Mobpush为APP开发者提供了用户收到推送后行为特征的数据分析&#xff0c;但由于用户使用的设备存在较大差异&#xff0c;不同厂商通道之间配置存在较大差异&#xff0c;不同的厂商通道对送达、展示和点击数据回执的支持程度各不相同…

汽车智能制造中的RFID技术在供应链生产管理中的应用

行业背景 汽车零部件工业是汽车工业中至关重要的一部分&#xff0c;对于汽车工业的长期稳定发展起着基础性的作用&#xff0c;近年来&#xff0c;汽车配件配套市场规模达到了2000亿元&#xff0c;维修市场达到了600亿元&#xff0c;随着汽车国产化的推进&#xff0c;汽车零部件…

机器学习-ROC曲线:技术解析与实战应用

目录 一、引言ROC曲线简介 二、ROC曲线的历史背景二战雷达信号检测在医学和机器学习中的应用横跨多个领域的普及 三、数学基础True Positive Rate&#xff08;TPR&#xff09;与False Positive Rate&#xff08;FPR&#xff09;True Positive Rate&#xff08;TPR&#xff09;F…

DNS域名解析与Web服务

一、DNS 域名解析 1、概念&#xff1a; (1) DNS&#xff1a; DNS&#xff08;Domain Name System&#xff09;是一种用于将可读的域名&#xff08;如www.baidu.com&#xff09;转换为计算机可理解的IP地址&#xff08;如192.168.1.1&#xff09;的分布式命名系统&#xff0c…

uniapp(uncloud) 使用生态开发接口详情5(云公共模块)

1.uniCloud官网 云对象中云公共模块: 网站: https://uniapp.dcloud.net.cn/uniCloud/cf-common.html // 官网介绍 cloudfunctions├─common // 云函数公用模块目录| └─hello-common // 云函数公用模块| ├─package.json| └─index.js // 公用模块代码&#xff0…

BaiChuan2保姆级微调范例

前方干货预警&#xff1a;这可能是你能够找到的&#xff0c;最容易理解&#xff0c;最容易跑通的&#xff0c;适用于各种开源LLM模型的&#xff0c;同时支持多轮和单轮对话数据集的大模型高效微调范例。 我们构造了一个修改大模型自我认知的3轮对话的玩具数据集&#xff0c;使用…

Scrapy设置代理IP方法(超详细)

Scrapy是一个灵活且功能强大的网络爬虫框架&#xff0c;用于快速、高效地提取数据和爬取网页。在某些情况下&#xff0c;我们可能需要使用代理IP来应对网站的反爬机制、突破地理限制或保护爬虫的隐私。下面将介绍在Scrapy中设置代理IP的方法&#xff0c;以帮助您更好地应对这些…

PAM从入门到精通(六)

接前一篇文章&#xff1a;PAM从入门到精通&#xff08;五&#xff09; 本文参考&#xff1a; 《The Linux-PAM Application Developers Guide》 先再来重温一下PAM系统架构&#xff1a; 更加形象的形式&#xff1a; 五、主要函数详解 4. pam_get_item 概述&#xff1a; 获取…

YUV图片常见格式

YUV图像 1个亮度量Y2个色度量(UV) 兼容黑白电视 可以通过降低色度的采样率而不会对图像质量影响太大的操作&#xff0c;降低视频传输带宽 有很多格式&#xff0c;所以渲染的时候一定要写对&#xff0c;不然会有很多问题&#xff0c;比如花屏、绿屏 打包格式 一个像素点一…

SRE 的黄昏,平台工程的初晨

船停在港湾是最安全的&#xff0c;但这不是造船的目的 完成使命的 SRE 过去 10 年&#xff0c;SRE 完成了体系化保障系统稳定性的使命。但在这个过程中&#xff0c;SRE 也逐渐变成了庞大的组织。而 SRE 本身的定位是保障系统稳定性&#xff0c;许多时候会因为担心稳定性而减缓…

线性代数-Python-01:向量的基本运算 -手写Vector -学习numpy的基本用法

文章目录 代码目录结构Vector.py_globals.pymain_vector.pymain_numpy_vector.py 一、创建属于自己的向量1.1 在控制台测试__repr__和__str__方法1.2 创建实例测试代码 二、向量的基本运算2.1 加法2.2 数量乘法2.3 向量运算的基本性质2.4 零向量2.5 向量的长度2.6 单位向量2.7 …