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的范圍了。
來源網絡,如有差錯請聯系網站客服幾十改正。

