野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10671|回复: 3

求助求助~F429中flash芯片收发数据方面,这是一个很神奇的问题

[复制链接]
发表于 2017-8-25 21:24:01 | 显示全部楼层 |阅读模式
本帖最后由 75970 于 2017-8-25 21:26 编辑

             简介:在野火提供的“flash收发数据”这一节的源码中经常使用   “SPITimeout”  这个变量,目的是让芯片做短暂延时来等待相应标志位的置0或置1,从而判断flash芯片状态。在源码中   SPITimeout  变量是定义为全局变量,在每个函数使用的时候对他进行赋值。我所奇怪是我取消了  SPITimeout   全局变量的定义操作,转为在每个使用它的函数中定义它一遍,结果程序运行就产生错误....错误标号为errorCode = 4。为啥呀.....
            补充:因为学习的需要我将火哥的源码剪裁了一下,只保留了如图1所示的三个功能函数和其相应关联的函数,实现基本的收发以及扇区擦除操作。然后调试运行,没有问题,程序成功执行。但是,如图(2)所示我将全局变量SPITimeout定义取消之后再程序内部定义一个临时变量,就出现问题了。定义完成的程序如图(3)所示,程序无法正常运行,串口输出errorCode = 4号错误。然后再将定义的临时变量去掉,从新改为    SPITimeout     程序又好了。为什么啊.....?

图(1)

图(1)
2.png

图(3)

图(3)

源码.zip

3.03 KB, 下载次数: 13

源代码,就一个文件

回复

使用道具 举报

 楼主| 发表于 2017-8-25 21:34:29 | 显示全部楼层
也就是将图2的内容换成图3的内容程序就出错,但是从理论上讲图二图三的代码实现的功能是一样的啊。
回复 支持 反对

使用道具 举报

发表于 2017-8-26 10:06:35 | 显示全部楼层
这还真看不出问题,理论上是一样的啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-26 14:34:18 | 显示全部楼层
flyleaf 发表于 2017-8-26 10:06
这还真看不出问题,理论上是一样的啊

森哥帮我跑一遍源码看看可以吗~~~就一个main.c加入工程就行,其他的都是标准配置~
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-15 14:44 , Processed in 0.030043 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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