铁头电子player 发表于 2025-6-29 09:59

如何为静态常量变量分配一个特定的地址?

在MXCubeIDE中开发STM32L412设备,在Flash中创建数组,将其初始化为静态常量。而且不想将其初始化为零。从本质上讲,我希望能够使用STM32CubeProgrammer更改闪存中的值,这样我就可以在不更改其余代码操作的情况下更改代码的这一部分。例如,我想把这个4字节数组赋给内存位置0x08010000。static const uint8_t flash_array ={        0x01, 0x02, 0x03, 0x04};如果我直接编译,可以看到它被放置在其他地方,因为我没有指定所需的位置,使用STM32 CubeProgrammer在该位置能够看到。假设有一种方法能够分配内存位置。记下位置并在事后更改它,,我希望对变量有更多的有用户控制控制。是否有这样的方法呢

wwppd 发表于 2025-7-2 11:41

提供了 #pragma 指令来指定变量的存储地址。

dspmana 发表于 2025-7-2 13:09

使用指针来手动分配和访问特定地址的变量。

kkzz 发表于 2025-7-3 19:34

硬件寄存器映射            

fengm 发表于 2025-7-3 20:25

使用volatile防止编译器优化

plsbackup 发表于 2025-7-4 11:13

通过宏封装地址访问            

jimmhu 发表于 2025-7-4 16:03

可以使用指针和初始化来实现。            

albertaabbot 发表于 2025-7-6 16:43

const变量            

macpherson 发表于 2025-7-7 12:56

__attribute__((at(address))) 属性来指定变量的存储地址

fengm 发表于 2025-7-7 13:52

C代码中声明变量位置            

elsaflower 发表于 2025-7-7 15:25

将常量变量放入Flash特定区域

wengh2016 发表于 2025-7-7 16:00

对硬件寄存器必须使用volatile,防止编译器优化掉“看似无用”的访问。

pixhw 发表于 2025-7-12 14:52

可以使用链接器脚本来指定变量的存储位置。

alvpeg 发表于 2025-7-12 17:38

直接使用指针或volatile(如寄存器访问)

rosemoore 发表于 2025-7-12 19:31

// C代码(Keil)
__attribute__((at(0x20001000))) static uint8_t system_state = 0x00;

houjiakai 发表于 2025-7-12 20:02

GCC编译器,可以使用 __attribute__((at(address))) 来指定变量的存储地址。

earlmax 发表于 2025-7-12 21:04

通过指针直接赋值            
页: [1]
查看完整版本: 如何为静态常量变量分配一个特定的地址?