今天调试GPRS部分遇到一个错误:在任务 App_TaskCH1PtlRxProc中,只要其调用OSTimeDlyHMSM这个函数,不论其延时时间多长,都会进入App_Fault_ISR错误。查看网上资料发现,进入这个错误一般是两个原因:
1.创建任务的时候堆栈错误(一般是栈顶指针错误)。
2.任务中没有无限循环。
个人通过检查, App_TaskCH1PtlRxProc中,这两项均没有错误,并且在本任务中,除了 OSTimeDlyHMSM命令之外的所有任务都可以运行。这就说明本任务是没有错误的,当本任务调用延时的时候,会进入下一个优先级更低的任务执行,是不是下一个任务的问题呢?果真如此,因为下一个任务只是暂时建立了一个框架,并没有给他无限循环,所以导致执行本任务时App_Fault_ISR错误。
两个总结:
1.网上别人的经验是非常重要的;
2.看上去毫无头绪的问题解决起来也并不一定那么难。