程序陷在while(1)里面

解决办法

  • 定点到发生死循环的位置
  • 打开stack windows逐层查找发生死循环之前运行过的函数
  • 导致原因

  1 内存溢出或者访问越界,通常为数组或结构体访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。

       2 堆栈溢出。增加堆栈的大小。

  3 在uCos-III系统中,任务切换时要关中断。

  4 没有打开相应的硬件模块但操作了相应的硬件而导致了错误

  5 Jlink的问题,禁止用Jlink供电就可以了。在Jlink commander中输入power off,

  6 程序在添加全局变量的时候会出现sprintf 输出的浮点数不正常,因此尽量不用sprintf函数。

  7 使用了非法的指针,比如说空指针u8 *p = null;*p = 1; 把0地址的数据强制设置为1, 不错才怪

  8 使用 OS_ENTER_CRITICAL();使用了 OS_ENTER_CRITICAL(); 却忘了OS_EXIT_CRITICAL(); 退出临界区

 

 

posted on 2018-12-13 10:56  dogsuned  阅读(312)  评论(0)    收藏  举报