在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参考它?
答案 0 :(得分:1)
https://github.com/Sirupsen/logrus
https://github.com/uber-go/zap
函数的Battery_Status
参数是一个参数,因此它存在于堆栈中。因此,当使用Set_Battery_Store
时,此函数实际上永远不会访问任何闪存。
为参数或全局变量指定不同的名称。