stm32f103和107区别

2019-07-21 03:49发布

本帖最后由 约翰一世 于 2019-3-28 17:48 编辑

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

【晶振区别】
l  通常电路板上,stm32f103采用8MHz外部晶振,stm32f107(互联型,STM32F10_CL)采用25MHz外部晶振(这时候默认时钟不用修改)。对应代码见V3.5.0版本固件库文件stm32f10x.h中Line115: 1.png

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

F107,因为具有USB OTG功能,因此需要特别时钟。一般采用25M外部晶振,方便提供USB或以太网相关时钟频率,最终系统时钟为72M。参考手册上对应时钟树图: 3.png l  参考:https://blog.csdn.net/qq_26602023/article/details/47261167
【启动文件区别】查看F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。Diffuse对比一下,发现只有OTG USB模块和Ethernet模块相关的中断及响应函数区别,再没有其它不同:
中断.png 中断响应函数.png 中断响应函数2.png

【总结】所以程序在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. 相应驱动文件的管脚绑定,要做对应改变。



0条回答

一周热门 更多>