OpenEdv-开源电子网

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

flash做eeprom的问题

[复制链接]

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
发表于 2016-8-24 10:40:37 | 显示全部楼层 |阅读模式
5金钱
我发现flash做eeprom的例程中,如果把读flash函数的输出数组u8 datatemp[SIZE];定义在main函数外面,下到mcu中,只能读出8个字节的数据,把datatemp定义在main函数中,又正常了,这是为什么?全局变量和局部变量在这有什么关系吗?求各位高手解答!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
408
金钱
408
注册时间
2016-1-27
在线时间
63 小时
发表于 2016-8-24 14:37:55 | 显示全部楼层
SIZE是宏定义?还是变量?
声明数组的时候,一定要确定数组长度,否则就会有异常。个人经验。
Mob:150 0032 0863
QQ:276204039
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-8-24 19:54:34 | 显示全部楼层
怀疑你测试方法有问题。不应该有这样的bug才对
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-8-24 21:25:07 | 显示全部楼层
本帖最后由 BigDiong 于 2016-8-24 21:33 编辑
liarlaker 发表于 2016-8-24 14:37
SIZE是宏定义?还是变量?
声明数组的时候,一定要确定数组长度,否则就会有异常。个人经验。

SIZE就是原程序定义的sizeof数组长度,是宏定义。跟宏定义有关吗?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-8-24 21:33:19 | 显示全部楼层
正点原子 发表于 2016-8-24 19:54
怀疑你测试方法有问题。不应该有这样的bug才对

我也很纳闷,用你的程序,就把tempdata数组的初始化放到main函数之前,运行状态就很怪,led灯不闪烁,但是按按键还是有反应,就是显示不了读出的数据,应该是没有读出数据。数组在main函数里定义,就正常了,跑的功能就是把数据写入flash再读出,这个数组是缓存数组,应该没有关系的。
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-8-24 21:39:18 | 显示全部楼层
正点原子 发表于 2016-8-24 19:54
怀疑你测试方法有问题。不应该有这样的bug才对

原子哥,还有个问题,f103的程序移植到f100的芯片上,除了改s文件,改system_init的频率还要改什么头文件?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-8-25 14:52:11 | 显示全部楼层
正点原子 发表于 2016-8-24 19:54
怀疑你测试方法有问题。不应该有这样的bug才对

原子哥,关于数组定义在main函数之前就死机的问题,我发现把原来是u8格式的数组定义成u16的放在主函数外就能正常运行了。应该是STMFLASH_Read()函数对其进行格式转换成u16的时候有问题。我在LCD_ShowString()函数中把u16的数组转换成u8的正常。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-8-31 23:17:36 | 显示全部楼层
BigDiong 发表于 2016-8-25 14:52
原子哥,关于数组定义在main函数之前就死机的问题,我发现把原来是u8格式的数组定义成u16的放在主函数外 ...

额,有时间我看看吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 23:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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