OpenEdv-开源电子网

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

读写flash问题

[复制链接]

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
发表于 2013-7-29 20:12:21 | 显示全部楼层 |阅读模式
今天搞了一下读写Flash,,,,遇到了一个问题,我将数据写入flash然后读出来在液晶上显示,结果是:读出来的数据是对的。。。但是接下来的程序就开始蛋疼了。我在读完的后面加了个延时。就死卡在延时里面了。就是等待滴答定时器计数结束那个位置卡住了。。。这个问题可能是什么原因啊




电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-7-29 20:16:44 | 显示全部楼层
再说一个新进展吧,,,,刚才是卡在延时里。。我就想着在读写flash完成后再初始化一下延时,重新配置一下滴答定时器,,然后后面的就能正常运行了。。。这个还是无法理解,到底哪里出问题了。


FlashWrite(ADDR,(u16 *)table,SIZE);
FlashRead(ADDR,(u16 *)testbuffer,SIZE);
GUI_DispStringAt(testbuffer,10,30);
OS_CPU_SysTickInit();  //延时初始化。。。。。。。。。。。只是将这里替换了上面的那句延时
znFAT_Check = znFAT_Select_Device(0,&znFAT_Init_Args_Struct);  //选择SD卡设备


电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-29 22:24:23 | 显示全部楼层
回复【楼主位】liklon:
---------------------------------
跟踪进入DelayMs里面看看到底什么问题了
你的delay用的什么方式做的啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-7-29 22:58:46 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
DelayMs也是用滴答定时器搞的。和板子例程是一样的。就是卡在了等待滴答定时器递减结束那里。如果在读写FLASH结束后再初始化一次延时,初始化里面也只是重新配置一下滴答定时器的时钟。这样只会就可以正常运行后面的程序。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-29 23:22:17 | 显示全部楼层
和我们的一样?
那不会卡死才对哦。你看看systick寄存器的各个位状态,有没有被停止了?》
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-7-29 23:27:02 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
恩,我再好好看看,谢谢原子哥了
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-7-30 09:14:36 | 显示全部楼层
今天又仿真好好瞧了一下,出现个更加蛋疼的问题......

昨天看的是,读写flash完成后延时函数不能用了。初始化延时后可以用。。所以就仿真看了关于初始化的一些变量,结果有个现象我不能理解:






上图中的全局变量g_us_count和g_ms_count在读写flash完成之后就被清0了。。。。
之后我又在这两个变量下面定义了一个u16 test_flash = 0xffff;发现读写flash完成之后,g_us_count和test_flash被清0了,g_ms_count没变。
这个问题大概是什么原因啊。



电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-7-30 10:31:33 | 显示全部楼层
很像访问越界.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-7-30 11:11:58 | 显示全部楼层
回复【8楼】shihantu:
---------------------------------
好像是这么回事
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-7-30 12:18:44 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
问题找出来了,,我将那个读取存放数据的数组定义为全局变量,类型为u8,,在使用读flash的时候强制转换为u16相当于数组扩展,这样将延时函数用的两个全局变量给覆盖了。我又将例程里的那个数组从主函数里拖出去,定义为全局变量,之后也出现了同样的问题。定义为全局变量后强制转换类型会出问题。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-16 04:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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