
【主要区别】 两者使用相同的stm32f10xxx reference manual,只是F107属于互联型设备,比F103多了OTG USB和Ethernet模块。3 K4 N4 J2 l0 Y1 w8 R% N 【晶振区别】; n( P9 [5 R( m, B9 C 通常电路板上,stm32f103采用8MHz外部晶振,stm32f107(互联型,STM32F10_CL)采用25MHz外部晶振(这时候默认时钟不用修改)。 对应代码见V3.5.0版本固件库文件stm32f10x.h中Line115:0 m0 f6 x& W- h8 u ` ' s4 a/ _; d, Q# x9 t& Y: { ![]() 原因: F103,外接8M,直接9倍频,得到72M时钟。参考手册上对应时钟树图:. r7 h! V7 Q) V0 p. | ![]() 0 S/ c6 Q9 W1 W$ }; p3 y! Q+ } F107因为具有USB OTG功能,因此需要特别时钟。一般采用25M外部晶振,方便提供USB或以太网相关时钟频率,最终系统时钟为72M。参考手册上对应时钟树图:' Y- H u$ x$ j7 ]1 o) E+ z ![]() 【启动文件区别】 查看F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。Diffuse对比一下,发现只有OTG USB模块和Ethernet模块相关的中断及响应函数区别,再没有其它不同: ![]() 【总结】+ _* }0 Y2 u- Y. A. W [" o; y 所以程序在F103和F107间移植时只用改变:0 [9 A& O6 ]5 K8 d3 B- Y Options->Device,名称更改。 Options->C/C+±>Define,预编译头文件更改,F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。 Options->Debug->Settings->Flash Download->Programming Algorithm,F107对应STM32F10x Connectivity Line Flash。+ b" D1 f: ~2 M( w4 u5 { 注意各个时钟频率,一个外部8M,一个外部25M,设定值影响时钟树。 替换程序启动文件。F103对应startup_stm32f10x_hd.s(大容量),F107对应startup_stm32f10x_cl.s,仅和OTG、Ethernet中断有关。9 b+ f1 d/ Z: E' V: |# g" v/ `; r) I 相应驱动文件的管脚绑定,要做对应改变。 ————————————————% T. X* j% J4 j8 u( t+ s% j 版权声明:一只嵌入式爱好者& l( p2 i1 ^3 l+ U' Q$ p 如有侵权请联系删除 M4 a/ l! x; T, P! j( l5 H 7 R! o; f: q2 h0 G" g; N1 X |