c - 访问 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。谁能告诉我如何更改校验和的值。
提前致谢。
问候维巴夫
解决方案
您不能像 RAM 那样写入闪存,仅此而已。Flash是ROM。这就是为什么您在闪存中分配的所有变量都是/必须是const
合格的,这意味着只读。
可以更改闪存,并且您的零件可以为此目的使用专用的数据闪存/eeprom。但是写入内存的这些部分并不是编译器会为你做的事情。您需要自己编写一个闪存编程驱动程序。如在,你必须学习手册+应用笔记中的闪存编程部分。
推荐阅读
- asp.net - 如何从任何类型的数据库(pdf、xlx、jp 或 png)中检索文件并使其可在网页上下载?
- php - CORS 策略已阻止访问 XMLHttpRequest - Laravel 5.8
- haskell - 我得到错误:非常简单的 Haskell 代码的变量不在范围内
- javascript - 必填字段检查无法正常工作
- c - 是否可以在 C99 (gcc/clang) 中使用 __asm 作为 lambda 表达式
- javascript - Javascript - 乘以 100 后特定数字的奇怪小数
- event-handling - 如何使用 asyncio 管理任务的动态列表
- scala - 如何获取某个 trait 的 val 实例的类?
- c# - 多个中间件(REST + SOAP)
- clickhouse - 重命名列 ClickHouse