STM32系列修改外部晶振以及代码的修改(f103、f105为例)

本文介绍如何在STM32系列MCU中,将外部晶振从8M修改为12M,同时保持主频72M不变,或调整至更高主频的方法。涉及stm32f10x.h和system_stm32f10x.c文件的修改技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32系列修改外部晶振以及代码的修改(f103、f105为例)

2017年12月08日 15:59:58 秋山刀名鱼丶 阅读数 7370

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.youkuaiyun.com/qq_26039331/article/details/78751047

此文章为引用 
正点原子详细讲解

刚刚接触STM32的时候,用的都是8M晶振。比如你想更换到为外部晶振为12M,但是主频仍想用72M的。该如何设置?或者想倍频到更高的主频该怎么修改?

例子就直接直接拿<正点原子>的例子吧!

属性原来现在
外部晶振8M12M
倍频96
主频72M72M

想从原来的8M修改到现在的12M,但是主频仍为72M,该如何修改:

(1)【设置外部晶振】打开stm32f10x.h,找到下图部分: 
F10X.H
修改之前如上图一样,HSE_VALUE为外部晶振,如果你用的是f103的芯片,则修改下边这个为12M; 
12m

(2)【设置主频】打开system_stm32f10x.c,找到下图部分: 
72m
也可以根据自己的需要修改为56M、48M等;

(3)【设置倍频】打开system_stm32f10x.c,找到自己的想要的主频函数: 
123 
再找到这里(默认的情况下): 
fff
①修改F103(外部晶振12M倍频到72M): 
66
②修改F105、F107(外部晶振12M倍频到72M): 
111
讲解结束;

正点原子的还有一个是F103倍频到128M的教程。单片机超频太多不稳定,建议先更换更快的晶振,在进行倍频到128M。

 

<think>首先,用户的问题是:“我想询问STM32F105是否兼容STM32F103的库文件 请问STM32F105 是否可以使用 STM32F103 的库文件”。这涉及到STM32微控制器的兼容性,特别是STM32F105STM32F103之间的库文件兼容性。 根据系统级指令,我需要: - 使用中文回答。 - 确保行内数学表达式用$...$格式,但这个问题可能不涉及数学表达式,所以可能不需要。 - 独立公式用$$...$$格式,但这里可能不适用。 - LaTeX语法正确:在回答中,如果有数学部分,我会使用LaTeX,但这个问题主要是硬件和软件兼容性,所以可能不需要。 - 生成相关问题:在回答结束后,需要生成相关问题。 - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠:基于提供的引用和一般知识。 提供的引用包括: - [^1]: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx数据手册。这表明STM32F105STM32F103是相似的微控制器。 - [^2]: STM32F103STM32F105在串口初始化的区别。讨论两者在串口初始化方面的差异。 - [^3]: STM32F103xx的USART1移植到STM32F105RBT6。提到时钟配置的区别,STM32F105默认使用25MHz晶振,需要改成8MHz。 - [^4]: 用户将STM32F103工程转变为STM32F105工程遇到的问题,发现晶振频率问题,需要修改头文件。 从这些引用中,我可以看出STM32F105STM32F103在硬件和软件上有一些差异,特别是在时钟配置上。STM32F105默认使用25MHz晶振,而STM32F103可能使用8MHz,所以需要修改库文件或配置。 关键点: - STM32F105STM32F103都是基于ARM Cortex-M3内核,所以它们共享相似的架构。 - 但是,它们有不同的外设、时钟树和可能的内存映射。 - 库文件(如STM32标准外设库或HAL库)可能不完全兼容,因为硬件差异。 具体到用户的问题:STM32F105是否可以使用STM32F103的库文件? - 从引用[3]和[4]看,用户尝试移植代码时遇到问题,需要修改时钟配置。 - 引用[2]提到串口初始化有区别。 所以,答案应该是:部分兼容,但需要修改某些配置,特别是时钟设置。 我的回答应该: 1. 确认它们有相似性,但存在差异。 2. 解释主要区别:时钟配置是常见问题。 3. 建议用户如何操作:如,修改头文件或使用正确的库版本。 4. 保持结构清晰:逐步引导。 最后,生成相关问题。 结构回答: - 引言:直接回答问题。 - 解释差异:基于引用。 - 提供建议。 - 结束语。 生成相关问题:如,关于移植细节、常见问题等。 确保语言自然。</think>### STM32F105STM32F103库文件兼容性分析 感谢您的提问!STM32F105STM32F103都是STMicroelectronics(ST)推出的基于ARM Cortex-M3内核的32位微控制器,它们在架构上高度相似,但硬件细节(如时钟系统、外设配置)存在差异。因此,STM32F105**不能直接完全兼容**STM32F103的库文件(如标准外设库或HAL库),使用时需要修改关键配置。下面我将逐步解释原因、差异点,并提供实用建议。 #### 1. **核心兼容性与主要差异** - **相似性**:STM32F105STM32F103共享相同的Cortex-M3内核,因此基础指令集和编程模型兼容。许多外设(如GPIO、USART、SPI)的寄存器映射类似,这使得部分代码(如逻辑控制)可以复用[^1]。 - **关键差异**:主要问题集中在时钟系统和外设初始化上: - **时钟配置**:STM32F105默认使用25MHz外部晶振(HSE),而STM32F103通常使用8MHz晶振。如果直接使用STM32F103的库文件,会导致时钟错误,影响系统时序(如延时函数、USART波特率)。引用[3]和[4]明确指出,需要在代码修改HSE_VALUE定义(如,在`stm32f10x.h`头文件中将晶振值调整为实际值): ```c // 在stm32f10x.h中修改HSE_VALUE #if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) // STM32F105默认25MHz #else #define HSE_VALUE ((uint32_t)8000000) // STM32F103通常8MHz #endif #endif ``` 如果不修改,会导致系统时钟错误(如引用[4]中用户遇到的LED闪烁时间异常)。 - **外设差异**:STM32F105属于"Connectivity Line"系列,支持更多高级外设(如USB OTG和以太网),而STM32F103属于"Performance Line"系列。串口初始化(USART)等配置有细微区别,如时钟源选择和寄存器设置[^2]。直接使用STM32F103库可能引发初始化失败或功能异常。 #### 2. **如何使用STM32F103库文件进行移植** 虽然不能直接兼容,但您可以基于STM32F103的库文件进行移植,步骤如下: - **步骤1:检查并修改时钟配置** - 确认您的硬件晶振频率(STM32F105通常为25MHz,但需参考数据手册)。 - 在工程中修改`stm32f10x.h`头文件,确保`HSE_VALUE`定义正确(如上所示)。 - 使用STM32CubeMX工具重新生成时钟初始化代码,避免手动错误[^3]。 - **步骤2:适配外设初始化** - 对于USART、SPI等外设,比较STM32F105STM32F103的数据手册,调整初始化参数。如,串口波特率计算依赖系统时钟,需确保时钟树配置正确[^2]。 - 参考官方移植示:如引用[3]所示,将STM32F103的USART代码移植到STM32F105时,需检查时钟分频和引脚映射。 - **步骤3:测试与验证** - 编译后,使用调试器(如ST-Link)检查时钟状态(通过`RCC`寄存器)。 - 运行简单测试(如LED闪烁或串口回环),验证时序是否正常。 - **推荐做法**:优先使用ST官方提供的STM32F1系列通用库(如STM32CubeF1),它支持多款芯片。如果必须用STM32F103库,请基于STM32F105的数据手册进行定制修改[^1]。 #### 3. **注意事项与最佳实践** - **风险提示**:直接使用未修改STM32F103库可能导致系统不稳定(如崩溃或外设失效)。引用[4]的用户案显示,忽略晶振配置会引入隐蔽的时序错误。 - **性能影响**:STM32F105的更高时钟频率(可达72MHz)能提升性能,但错误配置会抵消优势。 - **替代方案**:如果项目允许,建议迁移到HAL库或LL库,这些库为STM32F1系列提供统一接口,减少移植工作量[^1]。 - **参考资源**: - STM32F105数据手册:确认具体型号的硬件规格[^1]。 - ST官网的勘误表和参考代码:避免已知问题[^1][^3]。 总之,STM32F105可以部分使用STM32F103的库文件,但必须修改时钟和外设配置以适应硬件差异。如果您提供更多细节(如具体库版本或工程场景),我可以给出更针对性的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值