我初始化一个数组,然后我在其中看到随机值

问题描述 投票:0回答:1

在用 C 初始化数组时遇到以下问题。我使用的是 STM32 和 Keil uVision IDE。由于数组太大,因此在我们使用的外部 SDRAM 内存中声明(足够大)。这是代码:

分散文件:

SDRAM_ACQ_HARDCODED_AV 0xD0643000 0x141000{;N_DATA_ROWS_IN_N20_ALGORITHM_BUFFER
    *(.sdram_acq_hardcoded_av)
  }

C 文件:

#define SDRAM_ACQ_HARDCODED_AV __attribute__((section(".sdram_acq_hardcoded_av")))
SDRAM_ACQ_HARDCODED_AV const int16_t AcqRaw_StimArtifactRemoved_Buffer_By50nV_HC[14592] = {
-7154,
-7167,
-7158,
-7137,
-7122,
-7091,

.h 文件:

extern const int16_t AcqRaw_StimArtifactRemoved_Buffer_By50nV_HC[14592];

当我开始调试并检查该数组的值时,我看到数组内有完全随机的值。这里有什么问题吗?

我尝试查看分散文件或代码优化中的问题,但一切似乎都是正确的。

c stm32 microcontroller keil
1个回答
0
投票

此初始化不执行任何操作。内存控制器初始化后,需要将数据复制到SDRAM中。

编译器不会帮助您,因为启动代码是在您的程序初始化内存控制器之前执行的。

© www.soinside.com 2019 - 2024. All rights reserved.