jianhong_wu 发表于 2015-2-4 12:54:13

把掉电保存的数据存进单片机内部flash,重新烧录程序时这些数据会丢失吗?已解答。

本帖最后由 jianhong_wu 于 2015-2-4 13:06 编辑

威-广州:
比如说,我这次对单片机内部flash某一扇区的一个单元写了1进去,用一个变量,读取出来并且在液晶上显示,这一步没问题,但是我把写数据这段代码注释掉,重新编译烧录进单片机,那么读出来的数据就是0了。

鸿哥-深圳:
单片机重新烧录程序,内部的Flash可能会重新擦除的。我以前用pic18f4520这个单片机,它单片机内部的EEPROM数据会被擦除的,所以我推测Flash也一样。所以针对这种情况恐怕只能用外围的Flash芯片存储数据了。



Inc-东莞:
STM32也会用到内部的flash作为存储空间,他其刷程序,flash不会掉。想这不让flash不被擦,使用iap的方式就行了。一般没有特殊设置,烧录会整个flash都刷掉。

威-广州:
你说的是针对stm32吧?



Inc-东莞:
针对个毛,大把单片机都支持iap。

威-广州:
我在中颖手册里头,没看到iap的字眼

Inc-东莞:
切,你用的连20位ad都有,iap居然没有,你问问fae吧

鸿哥-深圳:
IAP一般是用在仿真器的单片机里的比较多。


Inc-东莞:
IAP我们也叫bootloader。这个具体最好是问问fae。一般支持仿真的芯片都支持的。例如stm32,iap系列的stc,avr之类的。

黑夜之狼 发表于 2015-2-4 12:56:38

鸿哥,内部的EEPROM没有被擦出掉

jianhong_wu 发表于 2015-2-4 12:58:07

黑夜之狼 发表于 2015-2-4 12:56
鸿哥,内部的EEPROM没有被擦出掉

我用的是PIC18F4520,它内部的EEPROM数据会因为我重新烧录程序而一起被擦除掉的。

黑夜之狼 发表于 2015-2-4 15:20:59

刚做了实验,问题已经解决。首先第一点,EEPROM是不会擦除的,另外,像鸿哥所说的,下载程序的时候是会把flash擦除掉,再写进去,但是,某些单片机,比如我今天用到的,可以选择扇区擦除的,也就是说,假如上次我选择了扇区10作为数据存储,写进去了,然后下次编译前,把写数据的代码注释掉,下载的时候不选择把扇区10擦除就没事了,可以正常读取数据,保证不丢失

jianhong_wu 发表于 2015-2-4 15:49:15

黑夜之狼 发表于 2015-2-4 15:20
刚做了实验,问题已经解决。首先第一点,EEPROM是不会擦除的,另外,像鸿哥所说的,下载程序的时候是会把fl ...

“下载的时候不选择把扇区10擦除就没事了”你的意思是,你的单片机在烧录时,可以在烧录软件选择相应的选项然后再烧录?烧录软件会给你相应的选项选择?

黑夜之狼 发表于 2015-2-5 10:00:32

jianhong_wu 发表于 2015-2-4 15:49
“下载的时候不选择把扇区10擦除就没事了”你的意思是,你的单片机在烧录时,可以在烧录软件选择相应的选 ...

就是这样,看下图在keil环境下,当然,这个是针对中颖的片子而安装的插件,选择“settings”,点击进去
以前调试的时候,我会选择右上角的“所有程序存储器”,我看了手册很多遍,针对我要实现的功能的资料确实没有找到,无奈之下只好自己想办法,在下载的时候发现了“扇区”
如果说下载是会擦除掉数据的话,我要是选择之前存放数据的扇区不被擦除就行了

jianhong_wu 发表于 2015-2-5 11:23:51

黑夜之狼 发表于 2015-2-5 10:00
就是这样,看下图在keil环境下,当然,这个是针对中颖的片子而安装的插件,选择“settings”,点击进去
...

明白了。
页: [1]
查看完整版本: 把掉电保存的数据存进单片机内部flash,重新烧录程序时这些数据会丢失吗?已解答。