IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> APM32F103RCT6替代STM32F107RCT6程序不变 -> 正文阅读

[嵌入式]APM32F103RCT6替代STM32F107RCT6程序不变

由于芯片价格上涨,产品成本增加,选用APM32F103RCT6替代STM32F107RCT6,原本板子上使用的是STM32F107RCT6,没有使用网络功能,使用的时钟源是25MHZ的外部晶振,开发平台是keil5。

1、是根据引脚的数量和容量大小进行区分的,两款芯片可以通用。

2、标准固件库也一样。

3、外部晶振有差异107默认使用25MHZ 103一般默认8MHZ。

4、如果不使用网络,OTG、以太控制器,两款芯片基本可以完成替换。

这些是背景的介绍。

要完成芯片的替换,主要考虑两件事:

1、考虑外部晶振、107是互联型 MCU区别与F103,因为他们具有USB OTG功能,因此需要特别的时钟。一般我们使用外部25MHZ振晶,方便提供USB或以太网相关时钟频率。而103 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。因此很明显,我们第一个要考虑的是外部晶振的适配。对于此问题,有两种解决方式,一、是修改外部晶振,把25MHZ的晶振替换为4MHz~16MHz这个范围内的晶振,最好是8MHZ,官方推荐的是8MHZ,但是8MHZ价格比较高,国内的8MHZ精度达不到。价格大概是2元一块,如果是用于生产产品,则推荐使用16MHZ,因为16MHZ的晶振价格便宜,大约是0.4元。由于,我手头只有一块12MHZ的晶振,下面我将以12MHZ晶振芯片为例,介绍一下,我的配置过程。二、是使用内部的HSI 8MHZ晶振。

2、考虑107和103芯片型号的替换。

下面是具体操作步骤。

(1)、首先把板卡上的25MHZ晶振替换成12MHZ晶振芯片,然后,用烙铁把STM32F107RCT6芯片去掉,重新焊接APM32F103RCT6。

(2)点击魔术棒,

选择APM32103RC这个包,其实选择STM32103RC的包也能用,我试过可以用。然后点击OK

(3)选择12MHZ

(4)、F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。

F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。(互联型产品)

在stm32f10x.h中有对外部晶振频率的宏定义,并且在注释中有提到为了避免修改该库文件,用户可以在工具链编译器预处理中定义该值

(5)、根据上图步骤8和下表选择第十步要添加的内容。

#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) &&
!defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) 
  /* #define STM32F10X_LD */     /*!< STM32F10X_LD: STM32 Low density devices */
  /* #define STM32F10X_LD_VL */  /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */  
  /* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density devices */
  /* #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
  /* #define STM32F10X_HD */     /*!< STM32F10X_HD: STM32 High density devices */
  /* #define STM32F10X_HD_VL */  /*!< STM32F10X_HD_VL: STM32 High density value line devices */  
  /* #define STM32F10X_XL */     /*!< STM32F10X_XL: STM32 XL-density devices */
  /* #define STM32F10X_CL */     /*!< STM32F10X_CL: STM32 Connectivity line devices */
#endif

(6)、修改程序配置

进入SetSysClockTo72()函数 由于在步骤8中选的是CL因此实际执行的是else的内容,外部晶振为12,目标是72 72 =12*6 按照如图修改。

剩下的就是编译烧写程序。

因本人知识能力有限,可能存在错漏之处,欢迎指正。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 15:53:12  更:2021-12-11 15:54:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:59:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码