M25P64、M25P128 flash驱动程序存在问题请教(与keil编译优化有关)

问题描述

M25P64、M25P128 flash驱动程序存在问题请教(与keil编译优化有关)
 //代码如下:typedef enum{    M25P64=0    M25P128=1}M25P_FLAG;M25P_FLAG M25P_flag;static INT8U info[3];/*--------------------M25P64M25P128检查芯片ID--------------------*/INT8U M25P64_check_id(INT16U *blocks_per_devINT16U *sectors_per_blockINT16U *bytes_per_sector){  SPI_FLASH_CS_LOW();    M25P64_CMD(RDID);    info[0]=M25P64_CMD(Dummy_Byte);  info[1]=M25P64_CMD(Dummy_Byte);  info[2]=M25P64_CMD(Dummy_Byte);  SPI_FLASH_CS_HIGH();  if(info[0]==0x20&&info[1]==0x20&&info[2]==0x17)    {        M25P_flag=M25P64;    return(0);  }    else if(info[0]==0x20&&info[1]==0x20&&info[2]==0x18)//M25P128  {        M25P_flag=M25P128;    return(1);  }  return(0Xff);}

问题背景:
1、在调试M25P64和M25P128,为了兼容两个芯片,增加了ID判断并对芯片型号做标志以便后续程序中读写方面的区分。
出现问题:
1、断点调试的时候发现当info[0]==0x20、info[1]==0x20、info[2]==_0x18_的时候能进去这个if里面: if(info[0]==0x20&&info[1]==0x20&&info[2]==0x17){...}
2、将keil设置中C/C++里面的优化由default改成level-0之后就正常了。
3、请教出现这种情况的原因,因为后面调试发现此处还导致了一些奇怪的问题。。。
附M25P64的数据手册:
M25P64

解决方案

优化之后代码乱序,断点单步看到的是不对的,有些地方看起来好像跑进去了,实际没有。

时间: 2024-09-15 13:36:38

M25P64、M25P128 flash驱动程序存在问题请教(与keil编译优化有关)的相关文章

vs2012-小弟请教VS2013无法编译的问题

问题描述 小弟请教VS2013无法编译的问题 为什么时不时会出现这种情况,除了重新开一个项目或重启VS,请教大神应该如何解决? 解决方案 我给你解释下为什么会这样吧.VS编译时是这样的: 1.先检查你代码有没有问题, 2.然后开始编译生成. 3.生成后再运行.. 你的这个错就是生成后,把文件放在DEBUG目录下时不能覆盖了,那么就是上次生成的文件还在使用. 解决办法就是:1.结束上次的进程,没有完全关闭他(有时是会这样的,不用太在意),2.用工具为上次生成的文件解锁 解决方案二: 之前你调试了程

请教如何反编译手机木马

问题描述 请教论坛里的大神,如何反编译手机木马,最近想学习一下APK反纺译,本人小白,要有什么基础吗?

新手请教dll反编译后的问题

问题描述 请教高手,Index.aspx中代码是:<%@PageLanguage="C#"Inherits="ReadygoNews.Pages.TempTrans"EnableSessionState="false"EnableViewState="false"%><%Trans(TemplateType.Index);%>是不是继承ReadygoNews.dll这个啊?我用ILSpy.exe反编译后

请教大神一个优化问题,听说是神马面试题

问题描述 请教大神给出优化建议,或者是优化代码,最好给出相应说明,本人是初学菜鸟,最好是简单点,不要太高深了啊!感谢各位! 解决方案 解决方案二:publicstaticvoidmain(String[]args){for(inti=0;i<1000000;i++){System.out.println("helloworld");}} 解决方案三: 解决方案四:直接循环1000000次,除了1楼的办法,不知道还能不能看到更好的办法.跟着学习.解决方案五:这样不行,不过我也没啥思

《精通Linux设备驱动程序开发》——1.7 编译内核

1.7 编译内核 了解了内核源码树布局后,现在我们来对代码稍做修改,并编译和运行它.进入位于顶层的init/目录,对初始化文件main.c做一项小的修改,即在start_kernel()函数的开头加上一行打印信息,宣布你对北极熊的喜爱: asmlinkage void __init start_kernel(void) { char *command_line; extern struct kernel_param __start___param[], __stop___param[]; + p

用Flash制作Google搜索程序

google|程序   在我们构造Google 搜索程序之前我们还需要Google Web APIs Developer's Kit,你可以从http://www.google.com/apis/download.html下截直接解压缩就可以了.里面已经含了所需要的文件和已经编译好的文件,官方地址是http://www.google.com/apis.不过实际上对我们有用的只是GoogleSearch.wsdl这个文件,把这个文件和SWF文件放在同一文件夹运行既可. 构造一个Flash 表单屏屏

Flash中的电影艺术之镜头技巧教程

技巧|教程 文章内容摘自<Flash动画与卡通制作创意导航>([美]Ibis Fernanadez著 罗小燕译 清华大学出版社) ,有改动,实例作品为若无说明为qhwa原创. 对于许多动画制作者来说,通过Flash获得电影般的效果十分困难,这样他们就不得不满足于非常规的处理方法或者静态画面,而这样又影响了他们的制作.只会说话的头十分枯燥,而且有时仅仅画出角色正确的动作和姿态是远远不够的. 电影艺术融化了摄影,舞蹈动作设计和影视编辑技术,其中影视编辑技术对于成功制作卡通动画来说起主导作用.通常,

FLASH ActionScript语言详解

详解 - Go to 跳转到指定的帧 - Play 播放 - Stop 停止 - Toggle High Quality 在高画质和低画质间切换 - Stop All Sounds 停止所有声音的播放 - Get URL 跳转至某个超联结 - FSCommand 发送FSCommand命令 - Load Movie 装载影片 - Unload Movie 卸载影片 - Tell Target 告知目标 - If Frame Is Loaded ..判断帧是否被完全载入 - On Mouse Ev

入门级技巧:FLASH 编程心得

编程|技巧|心得 其实我本人水平也不怎么样,今天之所以搞出个编程心得(主要是自己的一点点经验总结)的介绍,主要是想帮助有兴趣往深处研究AS的朋友,由于个人的水平有限,其中难免有谬误,欢迎大家讨论纠正.一来,帮助我进步:二者也是更重要的是,防止初学者养成不好的编程习惯! 废话说多了,下面开始: 一.FLASH有三个地方可以加代码,关键帧,MC(影片剪辑),按钮. 1.关键帧上加代码的灵活性很大,建议初学者:能写在MC或者按钮上的代码,就尽量不要写在关键帧上,关键帧上添加代码后,会出现一个a,如图一