OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6805|回复: 9

flash模拟EEPROM的问题

[复制链接]

15

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2017-7-11
在线时间
89 小时
发表于 2017-11-27 16:28:42 | 显示全部楼层 |阅读模式
5金钱
目前用的F429开发板用flash模拟EEPROM来存储一些数据,用的原子给的例程,出现了一些问题,还望大神解答,小弟不胜感激啊;
1.定义了16位的数组uint16_t Reg[]={0x0000,                                                               
                                                                0x0024,
                                                                0x0023,
                                                                0x0044,
                                                                0x0045,
                                                                0x0077,
                                                                0x0022,
                                                                0x0007,
                                                                0x0008,
                                                                0x0009,
                                                                0x000A,
};
然后在主循环里把这个数组通过调用STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)Reg,SIZE)把这个数组写到FLASH里面,紧接着,
我用STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,SIZE)这个函数来读,在线调试却发现只能读到前6个数据,后面的读不到。如图:
2。我想在程序运行中来更改这个数组的值,并且保存在flash里面,但是却一直写不进去,不知道为什么
FLASH_SAVE_ADDR这个地址不在运行程序中,在不写的情况下,我去读这个地址,是FFFF。
还望大神帮帮忙,着急用啊!不胜感激;

1511769290(1).png

最佳答案

查看完整内容[请看2#楼]

谢谢原子哥,数据已经存储到FLASH里面了,因为我用的不是读取到datatemp的值,还是要写数组的值,所以才会出现这种情况。马虎所致,感谢。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2017-7-11
在线时间
89 小时
 楼主| 发表于 2017-11-27 16:28:43 | 显示全部楼层
正点原子 发表于 2017-11-30 01:11
既然可以仿真,就单步跟踪看

谢谢原子哥,数据已经存储到FLASH里面了,因为我用的不是读取到datatemp的值,还是要写数组的值,所以才会出现这种情况。马虎所致,感谢。
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13118
金钱
13118
注册时间
2012-11-26
在线时间
3813 小时
发表于 2017-11-27 16:38:37 | 显示全部楼层
datatemp数组就开6个,不hardfault死机就不错了,心里没点B数?
回复

使用道具 举报

15

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2017-7-11
在线时间
89 小时
 楼主| 发表于 2017-11-27 16:47:48 | 显示全部楼层
jermy_z 发表于 2017-11-27 16:38
datatemp数组就开6个,不hardfault死机就不错了,心里没点B数?

什么意思呢,在哪能够设定datatemp的数组大小呢,刚接触这个玩意,不太懂
回复

使用道具 举报

15

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2017-7-11
在线时间
89 小时
 楼主| 发表于 2017-11-27 16:53:15 | 显示全部楼层
jermy_z 发表于 2017-11-27 16:38
datatemp数组就开6个,不hardfault死机就不错了,心里没点B数?

帮帮忙啊,谢谢了先
回复

使用道具 举报

5

主题

266

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1526
金钱
1526
注册时间
2016-7-20
在线时间
155 小时
发表于 2017-11-28 14:16:24 | 显示全部楼层
一看就知道新手,读出来的数据存的数组长度才6个,所以只能读到前6个
我是可以什么都不说 ,但不可以什么都不做。
回复

使用道具 举报

15

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2017-7-11
在线时间
89 小时
 楼主| 发表于 2017-11-28 16:21:55 | 显示全部楼层
super910906 发表于 2017-11-28 14:16
一看就知道新手,读出来的数据存的数组长度才6个,所以只能读到前6个

恩,谢谢,已经知道哪里有问题了。但是第二个问题还是不知道该怎么办,当我修改数组的值然后重新在写进FLASH里面,然后调试的时候在读FLASH发现更改的数值也变化了,可是我断电之后依然没有保存到FLASH里面,不知道哪里有问题。能不能给点意见,谢谢。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-11-29 00:52:58 | 显示全部楼层
郭子 发表于 2017-11-28 16:21
恩,谢谢,已经知道哪里有问题了。但是第二个问题还是不知道该怎么办,当我修改数组的值然后重新在写进FL ...

第二个问题,看我们的flash模拟eeprom实验
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2017-7-11
在线时间
89 小时
 楼主| 发表于 2017-11-29 10:40:29 | 显示全部楼层
正点原子 发表于 2017-11-29 00:52
第二个问题,看我们的flash模拟eeprom实验

谢谢原子哥的回复。关于第二个问题目前有些疑惑,还请原子哥不吝赐教。谢谢了先。
我在主循环中依次调用了FLASH读和写的函数,如图: 676038093878933374.jpg

当我用上位机来更给Reg[2]的值是0x0003的时候,满足这个if语句,LED2点亮,然后开始把Reg[2]=0x0003写入FLASH中,
我在线单步调试,当执行到读函数的时候,如图: 389084541149821661.jpg 此时,发现Reg[2]=0x0003确实写在了FLASH里面,
然后我开始断电再接电,LED2并没有点亮;然后我开始在线调试,当执行到读函数的时候,这时候写还没有执行,我发现Reg[2]的值依旧是0x0003,
说明Reg[2]被更改的值已经写入到了FLASH里面了啊,但是,为什么不执行if语句呢,也就是LED2为什么没有亮呢,不是已经满足这个if语句了么?
感觉很矛盾,说没有存进去,可是读确实能读到;但是效果却没有,不知道什么原因。还请原子哥百忙中给点建议,万分感谢。

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-11-30 01:11:01 | 显示全部楼层
郭子 发表于 2017-11-29 10:40
谢谢原子哥的回复。关于第二个问题目前有些疑惑,还请原子哥不吝赐教。谢谢了先。
我在主循环中依次调用 ...

既然可以仿真,就单步跟踪看
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 10:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表