STMCU小助手
发布时间:2022-2-21 20:13
|
一. 应用背景 当客户遇到存储小量的数据,同时数据写的频率比较低的情况下。从成本角度希望省掉外置 EEPROM,STM32 提供了 Backup SRAM(4K)和 Flash 模拟 EEPROM 两种方案来解决该问题。但是,BackupSRAM 需要提供备用电源,Flash 模拟 EEPROM 又比较浪费空间(存放复杂的结构体数据也不方便)。如果数据擦鞋频率较低(Flash 擦写次数有限),可以考虑直接将数据存放在 Flash 中。本文提供了如何在 IAR6.5 实现该操作。 二. IAR 下的实现 1. icf 文件的配置 在 IAR 的 linker,config file editer 中设置中断向量表位置保持不变 0x0800 0000,代码的存放地址设置为 0x0800 8000 ~ 0x080F FFFF。我们将数据保存在 0x0800 4000 ~ 0x0800 7FFF 中。
同时在.icf 文件中做添加脚本: define symbol __ICFEDIT_region_DATAROM_start__ = 0x0800 4000; define symbol __ICFEDIT_region_DATAROM_end__ = 0x0800 7FFF; define region DATA_region = mem:[from __ICFEDIT_region_DATAROM_start__ to __ICFEDIT_region_DATAROM_end__]; place in DATA_region { readonly section .rom_data }; 2. 预编译的处理 #define DATA_ROM _Pragma("location=\".rom_data\"") DATA_ROM const uint32_t test_data[] = {32,33,34}; DATA_ROM const uint32_t test_data2[] = {33,33,34}; 编译后的.map 文件中
可以看到 test_data 已经放在了我们希望存储的地址。 用户可以通过调用标准外设库提供的 flash 函数对该数据进行修改。 |
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版