STM32后缀及选型杂记

举例:STM32  F  103  C  8  T  6
"F"那一位指的是产品类型,现在似乎只有通用型即"F"

"103"那位指的是产品子系列,101= 基本型,102 = USB基本型、USB 2.0全速设备,103 = 增强型,105或107 = 互联型

"C"那位指的是引脚数目,T=36脚,C=48脚,R=64脚,V=100脚,Z = 144脚

"8"那位指的是FLASH的大小,4=16K,6=32K(RAM=10K),8=64K(RAM=20K),B=128K(RAM=20K),C=256K(RAM=48K),D=384K(RAM=64K),E=512K(RAM=64K),F=768K(RAM=96K),G=1024K(RAM=96K)

"T"那位指的是封装方式,H=BGA,T=LQFP,U=VFQFPN,Y=WLCSP64

"6"那位指的是温度范围,6=-40~85摄氏度,7=-40~105摄氏度

除了基本功能外,下面是主要区别:

STM32F103资源:一路CAN2.0B,最大1MBFlash、96KB SRAM,,72MHZ主频,SDIO

STM32F105/107:两路CAN2.0B,最大256KBFlash、64KB SRAM,,72MHZ主频,一路USB2.0 OTG

STM32F207/217与F205/215:两路CAN2.0B,,最大1MB Flash、128KB SRAM,120MHZ主频,两路USB2.0 OTG,SDIO

最近用stm32f103rgt6时,发现芯片发烫,测试温度后,大约44度,于是怀疑是芯片有问题,或者电路问题,后来找到手册一看,正常工作温度就是45度,居然这么高,但c8t6的温度就比较低。

STM32后缀及选型杂记_第1张图片

我们在使用KEIL的时候,每次编译完程序之后,在Build Output里面都会出现下面这个东西: 
STM32后缀及选型杂记_第2张图片 
在Program Size一列可以看到: Code=23410 RO-data=1042 RW-data=236 ZI-data=9580

Code:程序代码部分 
RO-data:表示程序定义的常量及用const定义的常量 
RW-data:表示已初始化的全局变量 
ZI-data:表示未初始化的全局变量

Code、RO-data、RW-data 烧写的时候,存到flash里面 
RW-data、ZI-data 程序初始化的时候,RW-data会被拷贝到RAM里面,和ZI-data一同存在RAM里面

这样的话,Code、RO-data、RW-data一共是24688位,24.109KB。RW-data、ZI-data一共是9816位,9.586KB。我们用的单片机是STM32F103RBT6,这个单片机的FLASH是128KB,RAM是20K的。还是够用的,但是当程序量、变量增加的时候就要注意使用了。 
STM32后缀及选型杂记_第3张图片

通过上面可知,占用RAM大小的为RW-data、ZI-data,假设使用stm32f103c8t6,代码输出信息如下:

Code=23582,Ro-data=430,Rw-data=6144,Zi-data=14304,那么RAM大小为6144+14304=20448,19.96875kb,而c8t6只有20KbRAM,显然有些不够。

keil中数组定义RAM大小的关系:

假设定义数组 uchar Data[200][10];当改成 uchar Data[200][10],通过keil下侧的编译信息可以得出变化了100位,即0.0976kb。

再假如,使用rgt6,定义下面四个数组:

uchar t1[max_row][15];

uchar t1[max_row][15];

uchar R1[max_row][10];

uchar R1[max_row][10];

当max_row=256时,RAM=5368+23432=28800->28.125kb,

当max_row=512时,RAM=10488+31112=41600->40.625kb,

当max_row=768时,RAM=15608+38792=54400->53.125kb,

当max_row=1024时,RAM=20728+46472=67200->65.625kb,

当max_row=1280时,RAM=25848+54152=80000->78.125kb,

当max_row=1536时,RAM=30968+61832=92800->90.625kb,

当max_row=1792时,出现编译错误,已经超出rgt6的范围了。


你可能感兴趣的:(嵌入式)