查看: 3681|回复: 4

[求助] 问题求助。

[复制链接]

该用户从未签到

48

主题

141

帖子

1

中级会员

Rank: 3Rank: 3

积分
385
最后登录
2020-8-7
发表于 2010-4-30 12:20:24 | 显示全部楼层 |阅读模式
在中断设置前,我设置的端点都能正常停下来。但是在配置好中断后,我的断点只能在第一个点仅执行一次,第二次执行到断点就无法停下来了。什么原因?程序运行都没有问题。我用的是CW7.1版本,打过补丁,MQX RTOS,片子是MCF52259。不用RTOS也是这个现象。
我知道答案 目前已有3人回答
回复

使用道具 举报

该用户从未签到

3

主题

87

帖子

0

中级会员

Rank: 3Rank: 3

积分
306
最后登录
1970-1-1
发表于 2010-5-10 11:32:58 | 显示全部楼层

RE:问题求助。

没太明白你的意思,你设置的什么中断?你用了几个断点?是不是就是没有运行到断点?还是你的断点被清掉了。

该用户从未签到

48

主题

141

帖子

1

中级会员

Rank: 3Rank: 3

积分
385
最后登录
2020-8-7
 楼主| 发表于 2010-5-12 21:42:43 | 显示全部楼层

RE:问题求助。

问题已经找到了,是因为我在调试版本下开了MQX的任务所用的看门狗,自己加了一个看门狗溢出服务程序,导致在下一个断点停下来后看门狗溢出了。
if ( _int_install_isr(MCF5225_INT_SWT, isrINT_SCM_SWTI, NULL) == NULL)
{
  return FALSE;
}
_mcf5225_int_init(MCF5225_INT_SWT, 7, 3, TRUE);
但是奇怪的是我在服务程序里加的软件复位指令却没有起作用(溢出后可以进入服务程序),程序可以继续运行,但后面的断点却停不下来。
void isrINT_SCM_SWTI(pointer param)
{
  MCF_SCM_CWCR |= MCF_SCM_CWCR_CWTAVAL;
  MCF_SCM_CWCR |= MCF_SCM_CWCR_CWTIF;
  MCF_RCM_RCR |=MCF_RCM_RCR_SOFTRST;
}
MCF_RCM_RCR |=MCF_RCM_RCR_SOFTRST;这个软件复位指令是没有错的,单独调用没问题。
另外,我的程序可以在CW中选择Int Flash Release和Int Flash Debug两种编译模式(其实也就是编译配置不同),我在程序里是否可以识别这两种模式?如果能识别我就可以在Int Flash Debug调试时方便地使某些程序不纳入编译。现在我是定义了一个常量来识别,但每次编译运行版本时要去改一下,感觉比较笨。

该用户从未签到

2

主题

224

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
322
最后登录
1970-1-1
发表于 2010-5-14 16:33:42 | 显示全部楼层

RE:问题求助。

首先,支持你这种自问自答的行为——有头有尾,不像有些论坛的某些问题,搞定了只是说“已解决”了事。加油
其次,debug和release version,在codewarrior的Project Settings->Language Settings->C/C++ Preprocessor...设置页面是有区别的,debug version多一个#define _DEBUG 1。。。

该用户从未签到

48

主题

141

帖子

1

中级会员

Rank: 3Rank: 3

积分
385
最后登录
2020-8-7
 楼主| 发表于 2010-5-14 23:03:01 | 显示全部楼层

RE:问题求助。

谢谢,上次我用if(_DEBUG ),Release版本编译不过去,以为不能用。其实应该用    #if !_DEBUG+#endif       
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-5-14 12:02 , Processed in 0.211805 second(s), 24 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表