首页>>论坛 >>技术社区 >>飞思卡尔社区论坛 >>MQX
|
我要发帖  | 我要投票  | 我要回复  | 收藏
1

问题求助。

版主: 汪浩  kap  MQXFSL  ruiyuan 
问题求助。
 

在中断设置前,我设置的端点都能正常停下来。但是在配置好中断后,我的断点只能在第一个点仅执行一次,第二次执行到断点就无法停下来了。什么原因?程序运行都没有问题。我用的是CW7.1版本,打过补丁,MQX RTOS,片子是MCF52259。不用RTOS也是这个现象。

 
相关主题
回复 链接 收藏
 
RE:问题求助。
 
没太明白你的意思,你设置的什么中断?你用了几个断点?是不是就是没有运行到断点?还是你的断点被清掉了。
 
“谌”应该读shen,不读chen
回复 链接 收藏
 
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调试时方便地使某些程序不纳入编译。现在我是定义了一个常量来识别,但每次编译运行版本时要去改一下,感觉比较笨。
 
回复 链接 收藏
 
RE:问题求助。
 
首先,支持你这种自问自答的行为——有头有尾,不像有些论坛的某些问题,搞定了只是说“已解决”了事。加油
其次,debug和release version,在codewarrior的Project Settings->Language Settings->C/C++ Preprocessor...设置页面是有区别的,debug version多一个#define _DEBUG 1。。。
 
回复 链接 收藏
 
RE:问题求助。
 
谢谢,上次我用if(_DEBUG ),Release版本编译不过去,以为不能用。其实应该用 #if !_DEBUG+#endif
 
回复 链接 收藏
 
我要发帖  | 我要投票  | 我要回复  | 收藏
1