山高疑日近,海阔觉天低

记STM32开发记录

一,CPU代码移植
有时候拿到的代码和目标的设备的单片机型号不一致,移植的时候需要修改:
①汇编的startup_stm32f10x_*.s 文件,这个需要替换一下
②在Keil配置中,点击魔法棒,在”Device”选项卡,修改目标的设备名称
③在Keil配置中,点击魔法棒,在”C/C++”选项卡,预定义STM32F10X_MD

STM32F10X_LD  16-32K
STM32F10X_MD  64-128K
STM32F10X_HD  256-512K
STM32F10X_XL  512-1024K

④在Keil配置中,点击魔法棒,在”Debug”选项卡,修改为SWD
二,STM32选型
STM32芯片命名方式:STM32 F 103 R C T 6 xxx
1、STM32
STM32 = 基于ARM的32位微控制器
2、F103
F = 通用类型,103 = 增强型
3、引脚数:T/C/R/V/Z
T = 36脚 C = 48脚 R = 64脚 V = 100脚 Z = 144脚
4、闪存大小:4/6/8/B/C/D/E,括号为SRAM
扇区大小:<256都是1024;大于等于256都是2048
16-32 为小容量产品;3个Timer 2个Usart
64-128 为中容量产品;4个Timer 3个Usart
256-512 为大容量产品;8个Timer 5个Usart
4 = 16K字节(6K), 6 = 32K字节(10K) ,
8 = 64K字节(20K), B = 128K字节(20K)
C = 256K字节(48K), D = 384K字节(64K),E = 512K字节(64K)
5、封装:H/T/Y
H = BGA //引脚焊盘为与芯片下侧,典型X86 CPU
T = LQFP //常用封装四周是引脚
Y = WLCSP64 //四周是引脚,但是引脚是在芯片下方
6、温度范围:6/7
6 = 工业级温度范围,-40°C~85°C
7 = 工业级温度范围,-40°C~105°C
7、选项:xxx/TR
xxx = 已编程的器件代号
TR = 卷带式包装
三,STM32编译后空间占用
Linux虚拟地址分配
选择STM32会考虑其RAM、ROM(FLASH),RAM的特点是掉电丢失数据。ROM的特点是掉电不丢失数据,一般用来存储代码和常量区数据。
RAM:堆+栈+全局区(.bss段、.data段)= RW-data + ZI-data
ROM:代码区+常量区 = Code + RO-data + RW-data
Code:代码(占用FLASH)
RO-data:只读常量(占用FLASH)
RW-data:已初始化的可读可写的变量(同时占用RAM与FLASH)  初始化的全局或者静态变量
ZI-data:未初始化的可读可写变量(占用RAM) 未初始化的全局,静态变量

2、库调用
四,Keil版本历史
官方链接
可以看出从MDK 5.20开始默认的编译器是Arm Compiler 6 了

赞(0) 打赏
未经允许不得转载:Mr.Zhang » 记STM32开发记录

你的打赏是我的动力

登录

找回密码

注册