stm32f103和107区别

时间:2024-04-04 14:11:41

【主要区别】
两者使用相同的stm32f10xxx reference manual,只是F107属于互联型设备,比F103多了OTG USB和Ethernet模块。

【晶振区别】

l  通常电路板上,stm32f103采用8MHz外部晶振,stm32f107(互联型,STM32F10_CL)采用25MHz外部晶振(这时候默认时钟不用修改)。

对应代码见V3.5.0版本固件库文件stm32f10x.h中Line115:

stm32f103和107区别

 原因:

F103,外接8M,直接9倍频,得到72M时钟。参考手册上对应时钟树图:

stm32f103和107区别F107,因为具有USB OTG功能,因此需要特别时钟。一般采用25M外部晶振,方便提供USB或以太网相关时钟频率,最终系统时钟为72M。参考手册上对应时钟树图:

stm32f103和107区别

参考:https://blog.csdn.net/qq_26602023/article/details/47261167

【启动文件区别】

查看F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。Diffuse对比一下,发现只有OTG USB模块和Ethernet模块相关的中断及响应函数区别,再没有其它不同:

stm32f103和107区别

 

【总结】

所以程序在F103和F107间移植时只用改变:
1. Options->Device,名称更改。
2. Options->C/C++->Define,预编译头文件更改,F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。
3. Options->Debug->Settings->Flash Download->Programming Algorithm,F107对应STM32F10x Connectivity Line Flash。
4. 注意各个时钟频率,一个外部8M,一个外部25M,设定值影响时钟树。
5. 替换程序启动文件。F103对应startup_stm32f10x_hd.s(大容量),F107对应startup_stm32f10x_cl.s,仅和OTG、Ethernet中断有关。
6. 相应驱动文件的管脚绑定,要做对应改变。