c - 访问 typedef 结构元素

标签 c struct embedded cortex-m

我已经声明了一个 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/

相关文章:

c - 多任务下与UART FIFO相关的Bug

c - 将图像旋转 90 度的算法? (没有额外的内存)

c - 递归地打印结构数组中的数据

C - sscanf 在读取文件后给我错误的输出

c - 结构成员对齐——使用 16 位和 32 位编译器的不同 sizeof

c - 指向共享变量的指针互斥

c - 将参数传递给函数指针数组

c - MPI_Isend 段错误

c - 从 C 函数返回指向 uint8_t 数组的指针 - 出现编译器错误

pointers - 指向结构满足接口(interface)的指针