在 main 中定义和初始化 flash 变量

Define & Iniitialise flash variable in main

在 main.c(IAR Embedded Workbench / TI MSP430F)

中努力定义和初始化闪存变量可能是一个简单的命令

我在一个单独的 C 文件 (Battery_Store.c) 中有一个 flash 例程,它接受一个变量(来自 main)并将其存储在一个设定的位置。 flash例程函数。

void Set_Battery_Store( unsigned int Battery_Status )
    {

            Flash_Start() ;
            Flash_Erase_Segment( (unsigned int *)&Battery_Status ) ;
            Flash_Write_Word( (unsigned int *)&Battery_Status, Battery_Status ) ;
            Flash_Finish() ;
    }

我在同一个 C 文件中定义变量并初始化它

const volatile unsigned int Battery_Status @ 0x1070 = 1 ;

和.h

extern const volatile unsigned int Battery_Status ;

当然,每次我从 main 调用 Battery_Store 时(System_Flags.Battery_Status 是在 main 中处理的不同变量)。即

Set_Battery_Store (System_Flags.Battery_Status)  ;

Battery_Status又变成了1,大概是因为

const volatile unsigned int Battery_Status @ 0x1070 = 1 ;

如何从 main.c 中(而不是在 Battery_Store.c 和 Battery_Store.h 中)设置和初始化 Battery_Status 并让 Battery_Store.c 引用它?

Set_Battery_Store函数的Battery_Status参数是一个参数,所以它住在栈上。所以当使用 &Battery_Status 时,这个函数实际上不会访问任何闪存。

为参数或全局变量指定一个不同的名称。