用flash当eeprom用,实现掉电保存的疑问
编好的程序也放在flash中对吧,我在flash中划出一个区域当eeprom.我怎么知道这个区域是空闲可用的,万一已存放的是主程序代码,不会把主程序删掉么。 看编译信息, 占用的空间 iffi123 发表于 2021-12-4 22:06看编译信息, 占用的空间
看来是有潜在冲突可能了,那我简单的从flash的最高处地址写,应该就能暂时不担心这个问题了,是这样的吗? 本帖最后由 iffi123 于 2021-12-4 22:24 编辑
爱咋咋地了 发表于 2021-12-4 22:16
看来是有潜在冲突可能了,那我简单的从flash的最高处地址写,应该就能暂时不担心这个问题了,是这样的吗 ...
那可能是堆栈的空间
其实还有个办法, 程序先定义你需要的空间大小的数组, 然后通过指针获得空间起始地址, 这样就很安全 哦哦哦,好的 你不看芯片Datasheet的吗? 是STC的吗? 堆栈空间应该在RAM吧。 本帖最后由 iffi123 于 2021-12-14 15:41 编辑
bis 发表于 2021-12-14 15:34
那种单片机会让堆栈使用flash区域?讲给我听听让我也乐一乐。
头昏搞错了, 堆栈在RAM 堆栈使用的SRAM,固件才是FLASH,一般来说有烧写地址信息
不要重复使用地址就没事了,但FLASH寿命有限,频繁写入的话建议外置24、25芯片 用休眠方式来保存数据(到RAM)也可,许多芯片的休眠电流已经做到1uA以下,与电池自然损耗差不多了。 看stc的pdf,stc单片机模拟eeprom掉电存储我也做过,放心写好了,厂方是不会让你改掉程序的,有寄存器设定的,比24c方便多,毕竟可以少用一个芯片。但注意的是这东东擦写是整个扇区,我是把改写的字节全先放在单片机ram,然后一下子写入flsh
页:
[1]
2