[求助] 8962 flash当作eeprom 与延时冲突问题

eeleader   2010-7-12 13:35 楼主
调用 FlashEEPROM_WriteN(50, cString, 2);后,如果后面的程序有语句SysCtlDelay(200 * (TheSysClock / 3000)); (无论延时多久,只要调用SysCtlDelay函数),程序就会陷在此延时函数中出不来了。不知道二者是不是有什么冲突,还是别的原因。貌似以前也会有在延时函数中出不来的情况,但是后来不知道怎么又没事了。最近又出现此情况,不知道原因是什么,哪位高手能帮忙解决一下。我用的是jlink调试。
一个为理想不懈前进的人,一个永不言败人! http://shop57496282.taobao.com/ 欢迎光临网上店铺!

回复评论 (3)

单步调试看看,看会不会是变了没有改变啊?
我的博客
点赞  2010-7-12 13:49
单步跟踪一下,我也是这样用的,没有问题
点赞  2010-7-12 14:52

  我认为:可能是写FALSH的内容比较多,时间拖的太长了。而恰好SysCtlDelay(200 * (TheSysClock / 3000)); 语句需要计时中断延时的,所以发生异常了。

  我对8962不熟,不过我知道NXP的M3会出现这种情况:

  1、在擦除/写操作过程中,片内Flash存储器不可访问。只有当用户应用程序代码启动执行时,用户Flash区的中断向量才有效。在调用Flash擦除/写IAP之前,用户应当禁止中断或确保用户中断向量在RAM中有效且中断处理程序位于RAM中。IAP代码不能使用或禁止中断。

 

  你可以只写一个字节或者采用其他方式延时试一试。

  如果SysCtlDelay(200 * (TheSysClock / 3000)); 语句需要计时中断的话根本就不能在这里用。

[ 本帖最后由 zhdphao 于 2010-7-12 21:07 编辑 ]
点赞  2010-7-12 21:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复