请问高手,我在调试lpc2134时的问题

[复制链接]
3304|16
 楼主| 无冕之王 发表于 2010-1-27 16:38 | 显示全部楼层 |阅读模式
我在调试lpc2134过程中,程序老是跳到“指令终止”、“数据终止”、“未定义指令”,我用的是周立功的工程模板。
经过断电或复位后,有的时候程序又能运行正常了,但大部分时间都出这个现象,我调这个板子一周了,程序没编多少,大部分时间都浪费在这个上面了

那位高人知道这是怎么回事啊??
华荣汇FAE1 发表于 2010-1-29 17:12 | 显示全部楼层
复位电路不可靠
华荣汇FAE1 发表于 2010-1-29 17:12 | 显示全部楼层
这个问题可以请教周工呀
gxgclg 发表于 2010-1-29 21:50 | 显示全部楼层
换个硬件试试
司徒老鹰 发表于 2010-2-9 00:46 | 显示全部楼层
只能的问题:堆栈溢出、输出越界、“野指针”等。
zwll 发表于 2010-2-9 23:27 | 显示全部楼层
只能的问题:堆栈溢出、输出越界、“野指针”等。
司徒老鹰 发表于 2010-2-9 00:46
野指针啥意思?
司徒老鹰 发表于 2010-2-9 23:29 | 显示全部楼层
这个都不知道啊
司徒老鹰 发表于 2010-2-9 23:30 | 显示全部楼层
本帖最后由 司徒老鹰 于 2010-2-10 23:45 编辑

给你个准确的答案吧。
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种:
  一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。
  二、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。例:
  char *p = (char *) malloc(100);
  strcpy(p, “hello”);
  free(p); // p 所指的内存被释放,但是p所指的地址仍然不变
  if(p != NULL) // 没有起到防错作用
  strcpy(p, “world”); // 出错
  
司徒老鹰 发表于 2010-2-10 23:45 | 显示全部楼层
另外一个要注意的问题:不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放。
zwll 发表于 2010-2-12 22:29 | 显示全部楼层
这个都不知道啊
司徒老鹰 发表于 2010-2-9 23:29
呵呵,知道了,谢谢
zwll 发表于 2010-3-10 17:51 | 显示全部楼层
不知楼主解决了没有
hsbjb 发表于 2010-3-11 22:10 | 显示全部楼层
应该还是没解决
zwll 发表于 2010-3-12 20:42 | 显示全部楼层
5楼的情况都不是?
dfsa 发表于 2010-3-12 20:53 | 显示全部楼层
复位电路肯定要考虑电容的值
sinadz 发表于 2010-3-13 21:14 | 显示全部楼层
如果简单的程序都出现这样的问题,肯定是硬件上的最小系统没设计好
gxgclg 发表于 2010-3-14 20:05 | 显示全部楼层
最小系统最容易出问题的就是复位电路了
pkat 发表于 2010-3-15 21:02 | 显示全部楼层
我觉得芯片只要电源和地接的没问题,应该就可以工作了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:喜欢远行

160

主题

3331

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部