在实际项目中,我们根据项目需求选用最合适的芯片型号,有时会涉及到一个工程代码在不同芯片上的使用,不同型号的芯片如何移植呢?通过本文,您将了解基本的移植过程。 / Y! Y0 P% b5 D0 o# O0 L& w( U
1.准备工作6 Y- e1 o/ }! H e C5 F, e/ o1 O
1.1 根据芯片的命名规则确定要移植的型号的flash大小
0 Z9 ]* M6 s! @2 u; @
& c! E* H0 n0 v& O0 j* H
/ i2 \% o" o) e/ l6 g0 B J8 G8 E
其中用到的是芯片类型的flash的大小,比如STM32F103VBT6,表示flash大小的位为“B”,对应的是128k字节,由此可以该型号的flash大小。 ; u+ `6 Q5 }1 N) o. l/ i! i
1.2 根据flash大小选择合适的启动文件
% @, n# A z+ c* ] EST官方提供了3个启动文件,分别适用于不同flash容量的STM32芯片,跟别为: # [* P* t" X/ }
startup_stm32f10x_ld.s 适用于小容量 产品
& }0 {- ~+ q0 S4 I M8 w% n startup_stm32f10x_md.s 适用于中等容量产品3 G( `+ h: I/ ?4 ?
startup_stm32f10x_hd.s 适用于大容量产品
! r! i1 ~# |' P1 s关于FLASH的大小.判断方法如下:3 Z% F: N+ I1 C7 e
小容量:FLASH≤32K
7 T# L2 r- N% Z6 D% @. ]( Q 中容量:64K≤FLASH≤128K/ U+ \- M6 f# b! i5 l
大容量:256K≤FLASH
& y! U7 C# H5 Y" _) c- q, ~* x
根据自己所选用的STM32芯片选择不同的.s文件。如果与原工程的启动文件不一样,则需要更换,否则就略过修改启动文件部分。(启动文件可以再原子提供的资料里找到) & X: h0 R5 J6 U- ]! ]
1.3 根据工程修改选用的启动文件7 i$ Z& [5 z/ e
我们在开发过程中一般使用的是库函数版,而ST提供的启动文件中默认是注释掉了启动文件调用系统初始化函数的部分(.s文件里分号是注释符)。 0 B1 K; |( L# p P7 @, l
$ Y: `' {7 k, [) ^' y+ r- ]! j6 \如果这里不做修改,会导致系统无法初始系统时钟。因此,如果使用的是库函数版本,一定要把注释去掉!
; u- A) ?9 G* q 1.4 更换工程中的启动文件$ m% P+ k. w7 Z% ~# j* O" j
将工程中的启动文件换成所选的启动文件即可。 
" m$ m) r m# E% ~- y6 g 2.配置IDE
6 c+ x2 s( E( m% x6 U3 l' V+ @8 H点击魔法棒依次进行一下配置 1).device 项: 选择选用的单片机型号 2).C/C++ 项:根据选用的型号是大中小容量,分别改为:STM32F10X_HD、STM32F10X_MD、STM32F10X_LD
. N2 o# O' i% K! U& K: \
! I7 A2 `7 E5 y
3).Debug 项:根据所选型号修改一下信息,因为这里选用的型号是F103VBT6,就改成...VB。 A) }( J8 y/ U1 ~
: o. B: L+ T6 m9 n2 l
然后点击OK保存 ; b; ]9 C5 E* J: N* h6 p3 k
4).再次打开Debug项,按照剪头操作(里边的下载器/仿真器的配置这里不废话了),根据所选型号的flash的大小选择合适的大小。
: Y! B0 V9 \* ], _% L, y
% _) G& L A/ s _5 }3 F 3.下载/仿真验证! L2 _0 S5 {4 s; ]
& j' e7 `# N% m* W' a
2 q) M+ A: ~! |) o" E4 s由于该方法没有经过不同芯片型号的大量的验证,出于严谨需要,我会根据网友反馈不断更新经过验证该方法的单片机型号,因此希望大家移植成功之后反馈你移植的型号,也欢迎对文中错误之处进行指正,以提高文章的可靠性和所述方法的普遍性。 STM32F103ZET6 移植到 STM32F103VBT6 验证可行 8 C) W! K8 W$ w5 w
$ r1 Q& A, ~# L1 n$ j% V/ A/ z0 a |