stm32f103 存储管理
更多
STM32F103 的存储管理涉及芯片内部存储资源的分配、访问控制及优化,以下是关键要点:
1. 存储结构
STM32F103 基于 Cortex-M3 内核,存储空间采用 统一编址(Von Neumann 结构),主要分为:
- Flash 存储器:用于存储程序代码和常量数据,容量因型号而异(如 64KB、128KB 或 512KB)。
- SRAM:用于变量、堆栈和动态内存,容量通常为 20KB~64KB。
- 外设寄存器:通过内存映射方式访问(如 GPIO、定时器等)。
存储地址范围:
- Flash:
0x0800_0000开始 - SRAM:
0x2000_0000开始
2. 启动模式
通过 BOOT0/BOOT1 引脚选择启动源:
- 主 Flash 启动(BOOT0=0):从内部 Flash 运行程序。
- 系统存储器启动(BOOT0=1, BOOT1=0):用于串口/USB 下载固件。
- SRAM 启动(BOOT0=1, BOOT1=1):调试或临时运行代码。
3. 内存分配管理
- 链接脚本(.ld 文件):定义 Flash 和 SRAM 的分布,指定代码、数据、堆栈的位置。
MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K } - 堆栈配置:在启动文件(如
startup_stm32f10x.s)中设置堆(Heap)和栈(Stack)大小。Heap_Size EQU 0x400 ; 1KB 堆 Stack_Size EQU 0x800 ; 2KB 栈
4. Flash 存储器操作
- 读写限制:Flash 按页(1KB 或 2KB)擦除,写入前需先擦除。
- 库函数:使用标准外设库(如
FLASH_ErasePage()和FLASH_ProgramHalfWord())操作 Flash。 - 注意事项:操作 Flash 时需关闭中断,避免程序在 Flash 中执行时擦写自身。
5. SRAM 管理
- 静态分配:全局变量和静态变量由编译器自动分配。
- 动态分配:使用
malloc()/free()需谨慎(可能产生碎片),建议设置合理堆大小或使用内存池。 - 对齐要求:DMA 或外设访问时,确保数据地址对齐(如 4 字节对齐)。
6. 存储器保护单元(MPU)
Cortex-M3 支持 MPU,可设置内存区域权限(只读、禁止执行等),增强系统稳定性。需结合 RTOS(如 FreeRTOS)或自定义任务划分使用。
7. 常见问题
- 堆栈溢出:表现为程序随机崩溃,需增大栈大小或优化递归/大型局部变量。
- Flash 写保护:操作 Flash 前需解锁(写
FLASH_KEYR寄存器)。 - 地址越界:访问未定义的存储区域会触发 HardFault 异常。
8. 优化建议
- 使用
const关键字将常量放入 Flash,节省 SRAM。 - 对频繁访问的数据使用
__attribute__((section(".fast_data")))分配到 SRAM。 - 启用编译器优化(-O2/-Os)减少代码体积。
通过合理配置链接脚本、监控堆栈使用及优化存储分配,可充分发挥 STM32F103 的存储性能。
STM32F103VET6
1970-01-01 08:00:00 至 1970-01-01 08:00:00
stm32f103 flash模拟eeprom
,STM32F103的Flash存储器可以模拟EEPROM的功能,在本文中我们将详细介绍如何使用STM32F103的Flash
2024-01-09 11:21:36
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览