我已经声明了一个 tydef 结构,如下所示。
#define START_ADDR 0xXXXXX
typedef struct{
uint32_t checksum;
uint16_t index[len];
} block;
我使用以下语句更改了 block 的内存分配:
block *value = (block*) START__ADDR;
我也验证了内存分配的变化,没有问题。 现在我正在尝试使用
更新校验和的值value->checksum=0xa5a5a5a5;
但是校验和的值为 0x00000000 并且没有更新为 0xa5a5a5a5。 谁能告诉我如何更改校验和的值。
提前致谢。
问候 维巴夫
最佳答案
您不能像写入 RAM 一样写入闪存,仅此而已。闪存是ROM。这就是为什么在闪存中分配的所有变量是/必须是 const
限定的,这意味着只读。
可以更改闪存,您的部件可以为此目的配备专用的数据闪存/eeprom。但是写入内存的这些部分并不是编译器会为您做的事情。你需要自己写一个flash编程驱动。同样,您必须研究手册 + 应用说明中的闪存编程部分。
关于c - 访问 typedef 结构元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55253482/