调用 FlashEEPROM_WriteN(50, cString, 2);后,如果后面的程序有语句SysCtlDelay(200 * (TheSysClock / 3000)); (无论延时多久,只要调用SysCtlDelay函数),程序就会陷在此延时函数中出不来了。不知道二者是不是有什么冲突,还是别的原因。貌似以前也会有在延时函数中出不来的情况,但是后来不知道怎么又没事了。最近又出现此情况,不知道原因是什么,哪位高手能帮忙解决一下。我用的是jlink调试。
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我认为:可能是写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 编辑 ]一周热门 更多>