
这里以STM32L4R5为例(官方出的DEMO板),将变量存储在指定的片内FLASH地址(0x081F8000)。* Y7 }5 H, Y: q' V8 Y3 M6 ^( s 4 p ~8 H$ `: e; L) I4 }# C; V 一、MDK Keil软件操作
如上图所示,采用上述方式,可以将version和version1分别存储在STM32单片机片内FLASH的0x081F8000和0x081F8010地址。! ~8 r k: f) n # w7 V! |. f: i3 H1 [" i4 ` 对于嵌入式系统或者单片机而言,通常会将一系列的配置文件存储在一个指定的区域(section)。也就是说,某种类型的变量存储在一个指定的区域内。在这里,就要修改STM32的链接文件了。: y1 i2 [0 B( N+ t+ [6 E% q 下图为STM32的默认链接文件配置。4 b b# p8 ^. s# y# c ![]() 修改Scatter File文件。添加下图中红框内的代码,该代码的含义是定义一个区域RW_IROM2(段属性为UNINIT_FIXED_LOC),该区域的起始地址为0x081F8000,大小为0x00008000。.ANY(UNINIT_FIXED_LOC)表示存储任何段属性为UNINIT_FIXED_LOC的数据。9 _% o. R5 y E9 c3 @ . \' R, v6 E. e. w ![]() ( S" Y2 `. }& G. k# E" G6 i6 N 取消1处的勾选,在2处选择自己修改过后的Scatter File。0 D. S1 n9 E& r * L+ q* F3 L" D6 B9 D- a8 L' ~ ![]() 3 Y( D# j: n: ?& }/ k. W 如此,在编程时,只需如此定义相应的数据类型。
在编译通过后,查看.map文件,可以看到0x081f8000处存储了0x0000000c大小的数据,段属性为UNINIT_FIXED_LOC ![]() ) b! B4 S6 Y5 j; M& r- ] 二、IAR操作2 s, i" } G2 _8 A4 F 在链接文件(.icf)中添加如下代码 ( k: m- T7 x4 y4 B5 I, @
三、注意 该文是将变量存储在STM32片内FLASH中,故对变量进行操作时,需要按照片内FLASH的操作方式进行,即先解锁,然后修改,再加锁。 ———————————————— 版权声明:老谭_酸菜. e6 J, ^& B9 ~/ l! B& {2 v3 [ ^ & G3 C, w0 \! L0 C& r8 R2 M2 t |
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命