STMCU小助手
发布时间:2021-7-7 11:32
STM32的单片机中,同一系列(如F0、F1、F4)不同型号(拿F1来说,如F103xB、F103xC、F103xE等)的芯片FLASH大小、RAM大小、外设会有所差异,但一般在程序编程的时候,这些芯片之间是可以互换的,只需要修改成对应的启动文件即可,而不需要在换了一个芯片后,又重新建立工程,将代码重新复制一遍。自己就干过这种蠢事,所以记忆比较深刻。在修改工程时候,需要知道芯片的容量大小、引脚数据等,这些都可以通过芯片的具体型号看出来。
1、STM32芯片命名规则
“R”:芯片引脚数量,常用的有C(48)、R(64)、V(100)、Z(144): g# F( q7 F* E+ G 0 L6 a" \/ }$ E# A “8”:芯片容量,常用的有8(64K)、B(128K)、C(256K)、E(512K) U" d" ]: B3 \: L* g0 F: }1 I . H' T1 r- R6 U# E 2、芯片容量(常用的F1系列)
3 B% A) F# }, I9 }: z5 p 小容量产品:是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。6 R9 b5 C8 [3 t! p0 ? r- s # w* C6 k' G- Q1 J 中容量产品:是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。/ ^( {0 ?4 D: {6 z% t. w 大容量产品:是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。; {0 d, ~1 r* i9 ~' z" x $ l. C) g% |2 Y7 ~, L 互联型产品:是指STM32F105xx和STM32F107xx微控制器/ p2 o. X4 j& e0 A1 H
小容量 1 i+ _9 ]4 @- I9 h8 P; V% _ 4(16K)、5(24K)、6(32K) 中容量 ( U, ?0 V+ Z6 \/ |- _: k& Y 0 U& `4 |; T5 P+ P! L 8(64K)、9(72K)、A(96K)、B(128K)* h9 e1 p e9 Q; V7 E 3 [- L2 y, M2 \8 @3 L; z 3 @" J" }: K, \2 { 大容量 ; H* d" A3 ?: S- \( t H- I9 ? C(256K)、D(384K)、E(512K) / x$ k* N4 w L. D5 ~( D 超大容量 7 A; F1 W* \, ^" z# x ' `8 ]- K' P$ l2 w F(768K)、G(1024K)) l4 b( J1 \' b5 ?( j# @4 b 注意:对于F1系列的芯片大容量产品的RAM主存储器每页大小为2K,如【下图】,而中容量和小容量的产品每页大小只有1K。# I/ L. w) }# \ d+ ?- r
3、同系列(STM32F1来说)不同型号之间程序移植 同系列不同型号的单片机之间程序移植相对好改,修改和需注意内容如下: 6 r" G- k- N1 H/ Z - `7 V) W* g% A0 `* {$ w ① 修改工程的device设备为对应的单片机型号& ]1 n* F6 |1 Q8 D 1 q p. R8 }5 y! U$ ? ② 修改工程的启动文件(注意:标志库和hal的启动文件位置和命名是不一样的)0 I3 d( r0 o; |9 I: {! E ST提供的V4.2.0版本的hal库中,启动文件存放在 .\CMSIS\Device\ST\STM32F1xx\Source\Templates 文件夹下,有arm、gcc、iar编译器下对应的启动文件,启动文件不是按照芯片的具体型号来定义的,而是按芯片相同容量的最大容量定义的,同系列相同容量的芯片公用同一个启动文件,有小容量的x6、中容量的xb、大容量的xe、超大容量的xg
ST提供的V3.5.0版本的STD库中,启动文件存放在 .\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup 文件夹下,有arm、gcc、iar、TrueSTUDIO编译器下对应的启动文件,启动文件不是按照芯片的具体型号来定义的,而是按芯片容量,同系列相同容量的芯片公用同一个启动文件,有小容量的ld、中容量的md、大容量的hd、互联型cl、超高密度型xi。+ b* V+ A5 }" G 大中小之外还有后面跟vl、cl 、 xl后缀 的文件2 O" X9 J: U) n+ v; j/ R! p, R ) n+ b9 Z: J9 [* i7 u5 D CL:connective line 指的是互联型产品 stm32f105xx和stm32f107xx 系列 - S" Z$ k' \7 s2 O9 p Xl :extreme line 超高密度型 产品 这种应该是stm32f101xx和stm32f103xx容量在MB级别的产品* \' }, O" L1 M. K+ b( q' e% H 7 h* D! ]" e1 m2 ] VL:valuable line 超值型 产品 这种是 stm32f100系列
5 b; H$ H4 |9 b1 l ③ 在 Target(Keil编译器中) 或 Linker(IAR编译器中)选项栏中修改芯片的具体FLASH大小和RAM大小
④ 修改默认添加宏,这里默认添加宏的作用是在 stm32fzxx.h文件中能自动将芯片对应的头文件添加进工程中,这里的宏定义在标准库和hal库中定义也是不一样的,
在V4.2.0版本的hal库中是这样定义的:STM32F103x6、STM32F103xB、STM32F103xE...;而在V3.5.0版本的STD库中是这样定义的:STM32F10X_LD、STM32F10X_MD、STM32F10X_HD...。刚好跟各自的库启动文件名称是对应的,下图是以hal库为例的" G( z [. H: ]; ^$ S: n ; }2 \& O6 p6 u! s8 j5 L & l8 o, y+ o, h/ C+ v c# a4 L |
|
这下选择可是方便多了。) P' V4 |1 M1 l* A5 |. U* n) _ |
微信公众号
手机版