程序陷在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(); 退出临界区
-------------------今天,也是很丧的一天-------------------
浙公网安备 33010602011771号