EEPROM_WRITE这个函数生效是不是有啥前提?
const uint32_t addr_data[200] __attribute__((at(0x00070000))) =
{
    0,
};
uint8_t data_s[200] = {0x04,};
EEPROM_ERASE(0x00070000, (uint32_t)200);
EEPROM_WRITE(0x00070000,(uint32_t *)data_s, (uint32_t)200);
PRINT("ad get da end\n");
PRINT("addr_data:\n");
for(uint8_t p = 0;p < 200; p++){
          PRINT("%x  ",addr_data[p]);
}
PRINT("addr_end\n");

为啥我已经擦除了起始地址

0x00070000

到之后长度200的范围数据,并且调用

EEPROM_WRITE

来写数据进flash,但数据没有成功烧录进去,打印出来全是0;这是为啥?我的芯片型号是CH585M

EEPROM的FLASH地址已经做了偏移,不需要再手动偏移,参考FLASH例程。

image.png


有没有flash的ID之类的可以用来验证是否能正常读取FLASH数据,我可以以此来看是否能正确擦除或者烧录数据进FLASH。有如果有例子,最好不过了?


可以查看FLASH函数的返回值,判断是否操作FLASH成功。


1733473723138032.png

:以上是小实验代码部分

下面是打印部分:

1733473826381556.png

EEPROM_WRITE

返回的是0,这个应该是数据存进去了,但却我用for循环打印addr_data[200]里的所有数据,发现,第一个数据并没有替换成数组data_s的0x04?这很奇怪,求解惑


只有登录才能回复,可以选择微信账号登录