访问typedef结构元素

时间:2019-03-20 04:11:21

标签: c struct embedded cortex-m

我已经声明了tydef结构,如下所示。

#define START_ADDR 0xXXXXX
typedef struct{
     uint32_t checksum;
     uint16_t index[len];
} block;

我使用以下语句更改了块的内存分配:

block *value = (block*) START__ADDR;

我也验证了内存分配的更改,并且没有问题。 现在,我尝试使用

更新校验和的值
value->checksum=0xa5a5a5a5;

但是校验和的值为 0x00000000 ,并且不会更新为 0xa5a5a5a5 。 谁能告诉我如何更改校验和的值。

谢谢。

问候 维巴

1 个答案:

答案 0 :(得分:2)

您不能像写入RAM那样就写入闪存,仅此而已。闪存为ROM。这就是为什么您在flash中分配的所有变量都必须/ const限定,即只读的原因。

可以更换闪存,并且为此您的部件可以具有专用的数据闪存/ eeprom。但是,写入存储器的这些部分并不是编译器为您完成的工作。您需要自己编写一个闪存编程驱动程序。与之类似,您必须研究手册+应用笔记中的Flash编程部分。