This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280039C-Q1:为什么在 CPU 复位后要初始化全局变量?

Guru**** 2039090 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1464196/tms320f280039c-q1-why-the-global-variable-be-initialized-after-cpu-reset

器件型号:TMS320F280039C-Q1

工具与软件:

尊敬的专家:

我会为我的客户提出这个问题。

在我们的 RTM 中、表示仅 POR 复位将初始化 RAM、另一个复位则不会初始化 RAM。

他们想要实现这个函数,他们将 定义一个全局变量,并在 main ()中初始化它;如果发生 POR 复位,这个值将被初始化,应用程序将执行一些操作;如果发生 CPU 复位,这个值不会改变,所以应用程序将执行其他操作。

但在他们的测试中、他们发现如果发生 CPU 复位、该值也会 被初始化。

连接调试探针、然后点击 Scripts--EMU_BOOT_FLASH、让 CPU 在 CPU 复位后运行到闪存中。

他们定义全局 变量、在运行 A=2之后、该值变为2;但在 CPU 复位并在 Device_init 中停止后、A 变为0。

但如果他们未定义该地址、而是直接在 RAM 中更改此地址的值、则此地址的值在 CPU 复位后不会更改。

他们想知道为什么会发生这种情况?

BRS

Shuqing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Shuqing、

    不初始化变量时、存储器中包含以前使用该变量时的值
    在 C 语言中、未显式初始化的全局变量会自动初始化为零(或 NULL 如果它是指针)。

    谢谢