定义&主

时间:2017-11-27 11:14:37

标签: c flash msp430

在main.c(IAR Embedded Workbench / TI MSP430F)中定义和初始化flash变量的简单命令可能很困难

我有一个flash例程在一个单独的C文件(Battery_Store.c)中,它接收一个变量(来自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_Status(而不是在Battery_Store.c和Battery_Store.h中)并让Battery_Store.c参考它?

1 个答案:

答案 0 :(得分:1)

https://github.com/Sirupsen/logrus https://github.com/uber-go/zap 函数的Battery_Status参数是一个参数,因此它存在于堆栈中。因此,当使用Set_Battery_Store时,此函数实际上永远不会访问任何闪存。

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