首页 > 解决方案 > 访问 typedef 结构元素

问题描述

我已经声明了一个 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。谁能告诉我如何更改校验和的值。

提前致谢。

问候维巴夫

标签: cstructembeddedcortex-m

解决方案


您不能像 RAM 那样写入闪存,仅此而已。Flash是ROM。这就是为什么您在闪存中分配的所有变量都是/必须是const合格的,这意味着只读。

可以更改闪存,并且您的零件可以为此目的使用专用的数据闪存/eeprom。但是写入内存的这些部分并不是编译器会为你做的事情。您需要自己编写一个闪存编程驱动程序。如在,你必须学习手册+应用笔记中的闪存编程部分。


推荐阅读