如附件所示,当运行到m= m = (*p)*8 + (*(p+1))*4 + (*(p+2))*2 + (*(p+3));后,m就等于7.然后在第一层switch中就不能跳转case 7那里。出现的状况是程序一直在运行,点击halt后仿真器直接被强行建议与CCS断开。请教一下TI工程师给我一点建议。谢谢咯。
Tony Tang:
这种情况可能是跑飞了,可能是内存不稳定。
程序是跑在片外内存吧。
Gangping Li:
回复 Tony Tang:
那么内存不稳定,应该去查找哪些原因呢?是堆栈还是内存分配的问题呢?
Tony Tang:
回复 Gangping Li:
我说的是可能SDRAM配置不正确。
程序是动行在片内,还是在片外?程序在片上内存运行稳定吗?
rookiecalf:
可以尝试直接赋值7看看能否到达case 7分支,另外switch使用时,是否设定了default分支
Gangping Li:
回复 Tony Tang:
程序运行在片内,在屏蔽某些语句后,这个问题能解决。但是屏蔽的部分又不能删除。屏蔽的部分不是在这个函数中,而且屏蔽部分原则上是没有问题的。
Gangping Li:
回复 rookiecalf:
单独的switch语句是没有这种问题的,而且有default分支。由于我做的是一个工程,在加入某一语句后出现那种情况,而加入的这块语句不是跟switch在一个函数中。
rookiecalf:
回复 Gangping Li:
那应该还是程序哪里有BUG,只能慢慢调试找出BUG的位置了