访问typedef结构元素

问题描述 投票:0回答:1

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

提前致谢。

关心Vybhav

c struct embedded cortex-m
1个回答
2
投票

你不能像闪存那样写入闪存,就是这样。 Flash是ROM。这就是为什么在flash中分配的所有变量都必须是const限定的,这意味着只读。

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

© www.soinside.com 2019 - 2024. All rights reserved.