STM32
直播中

h1654155275.5697

7年用户 615经验值
私信 关注
[问答]

怎样将STM32F103工程移植成STM32F107工程呢

STM32F107与STM32F103有何区别?
怎样将STM32F103工程移植成STM32F107工程呢?



回帖(1)

沈铿僖

2021-10-27 11:48:01
  由于最近芯片涨价,STM32F103系列的单片机价格已经十分昂贵,价格已经超出了我的承受范围, 所以我一直在寻找可替代的产品。之前,买过STM32F103C6T6A,当时是6元一片买的,买了20片,本来以为只是容量少了一半,最后发现这个型号是阉割版,相对于STM32F103c8T6来说,少了一个串口,少了一个SPI。这对于一般的应用来说,也是足够用了,但是对于一些其他的应用,就力不从心了。
  购买F107
  偶然间买了一片STM32F107RCT6,价格是11块多,相对来说价格已经很低了。昨天查看了资料,发现引脚和F103的完全兼容,之前有做过F103RCT6的板子,既然完全兼容,那么我就直接焊上去开始测试。
  一、F103和F107的区别
  首先,两个芯片都是意法半导体为ARM Cortex-M3内核出的用于自动控制领域的微处理器。
  F107是互联型接口,且内部资源较多,F103是增强型(比F101强),相比F103,F107加入IEEE以太网接口,2个IIS音频接口(做音频解码用),全部64KByte的SRAM缓存。
  107支持网络,支持OTG,可以有以太控制器,103是没有的。
  都是使用ST提供的标准固件库,完全通用。
  F103固件库中默认外部时钟是8M,F105和F107是25M.
  这里提供一个图给大家参考
  
  二、F107的内部资源
  关于F107的内部资源,是根据引脚的数量和容量大小进行区分的,基本和F103的一致。
  
  三、关于F103和F107的时钟
  F103,外接8M,直接9倍频,得到72M时钟。参考手册上对应时钟树图:
  
  F107,因为具有USB OTG功能,因此需要特别时钟。一般采用25M外部晶振,方便提供USB或以太网相关时钟频率,最终系统时钟为72M。参考手册上对应时钟树图:
  
  四、启动文件
  查看F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。对比一下,发现只有OTG USB模块和Ethernet模块相关的中断及响应函数区别,再没有其它不同:
  五、移植F103工程为F107工程
  1.拷贝一个F103的工程
  
  2.名称更改
  因为我们是F103的工程,用的是F103的芯片,我们使用F107的芯片,需要选择对应的型号。
  这里我使用的是F107RCT6.
  
  3.预编译头文件更改
  因为我们使用的是F107,所以头文件有所不同。
  F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。
  
  USE_STDPERIPH_DRIVER,STM32F10X_CL 中间需要用,隔开
  4.修改下载的容量
  如果我们使用下载器下载,需要设置一下这个芯片对应的容量大小,我的是RCT6,容量是256K。
  
  经过上面的步骤的移植,基本上已经可以进行通信了。
  测试:
  输入一句串口打印信息。
  
  结果:
  
  到此,移植成功。
  5.替换启动文件
  F103对应startup_stm32f10x_hd.s(大容量),F107对应startup_stm32f10x_cl.s,仅和OTG、Ethernet中断有关。
  上面已经测试成功了,为什么还要做这一步,因为startup_stm32f10x_cl.s包含有OTG和Ethernet中断有关的信息,我们没有使用这个功能,所以无所谓,但是一旦使用了就会报错,我们最好替换一下。
  六、关于我的调试
  今天焊好了基本外围电路,然后上电测试,发现串口打印的都是乱码,因为我焊接的是8MHZ的晶振,时钟不正确。
  因为是之前的板子,焊接的是8MHZ的贴片的SMD晶振,手头上没有25MHZ的这种晶振,在实验室找了一通,也没有找到这个晶振,最后没有办法,只能飞线了,还好还有之前用的429开发板上的晶振。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分