STM32F103移植程序到STM32F107注意事项

STM32F103和STM32F107在库函数和启动文件上有区别,F107多了OTGUSB和Ethernet模块。程序移植时,需更改预编译头文件,调整启动文件,并根据实际晶振修改系统时钟配置。在STM32F107中,可能需要修改库文件中的系统总线时钟计算方式以匹配8M晶振。
摘要由CSDN通过智能技术生成

【主要区别】:

STM32F103与STM32F107使用同一套库函数以及同一个参考手册。只是F107属于互联型设备,比F103多了OTG USB和Ethernet模块,因此两款单片机的.s启动文件不同(STM32F107完全可以按照STM32F103建工程的方式建立,只是使用的.s启动文件不同,其他完全一样)。

①. STM32F103使用startup_stm32f10x_hd.s(以STM32F103ZET6为例,后面103均以该型号单片机举例)文件, STM32F107使用startup_stm32f10x_cl.s文件。

②. STM32F103库函数中默认使用外部晶振为8M进行时钟的配置,最后得到的系统时钟频率为72M。而STM32F107库函数中默认使用的外部晶振为25M进行时钟的配置,最后得到的系统时钟频率也为72M。

【程序移植配置】:

1. 程序工程建立完成后,对预编译头文件更改。Options->C/C++->Define,F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。

2. STM32F103标准外设库中默认使用的外部晶振为8M,STM32F107标准外设库中默认使用的外部晶振为25M。如果107也使用8M的外部晶振,则需要对库函数中的系统总线时钟进行重新配置,否则得到的默认库函函数使用25M晶振会导致计算得到的系统总线时钟不准确。

打开库文件stm32f10x.h,找到如下图所示位置,将HSE_VALUE的宏定义改为8M(根据自己实际使用的外部晶振进行修改)。:

 3. 107计算总线时钟也是默认按照25M的外部晶振来计算的。因此,需要在system_stm32f10x.c文件中对总线时钟的计算方式进行修改。如下所示:

 我们使用8M晶振的话,直接将上图红色箭头所示部分直接删除即可,如果使用其他型号的外部晶振,则需要对上图红色箭头部分的计算公式进行调整,无论是103还是107最后计算得到的总线时钟频率都为72M。

参考资料:

STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析_指 纹的博客-CSDN博客

stm32f103和107区别_Lee139499的博客-CSDN博客_stm32f103和107的区别

STM32f103系列和f107系列移植_冷月枫啊的博客-CSDN博客_f103和f107

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值