【问题标题】:Define & Iniitialise flash variable in main在 main 中定义和初始化 flash 变量
【发布时间】:2017-11-27 11:14:37
【问题描述】:

在 main.c (IAR Embedded Workbench / TI MSP430F) 中定义和初始化闪存变量可能是一个简单的命令

我在一个单独的 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_Store.c 和 Battery_Store.h)中设置和初始化 Battery_Status 并让 Battery_Store.c 引用它?

【问题讨论】:

    标签: c flash msp430


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-21
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 2015-12-23
      • 2019-04-28
      • 1970-01-01
      相关资源
      最近更新 更多