MCU单片机STM32F系列不同尾缀之间的区别
"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的温度就比较低。
我们在使用KEIL的时候,每次编译完程序之后,在Build Output里面都会出现下面这个东西:
在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的。还是够用的,但是当程序量、变量增加的时候就要注意使用了。
通过上面可知,占用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的范围了。
来源网络,如有差错请联系网站客服几十改正。