首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

中断返回怎么指向非默认的位置[求助]

请问bqyjqj你是怎样处理的?我的处理方法类似于strongchen说得那样,中断设断点调试运行可以,不设断点全速运行程序就出错了
作个朋友
用别的方法是可以,但是中断设断点调试运行可以,不设断点全速运行程序就出错了。。。
作个朋友
希望大家指点一下,
作个朋友
static void init_timer(void) { //ʹÓÃÍⲿÖжϣ¬ÒªÏû¶¶£¡£¡£¡£¡
  DisableInterrupts          //¹ØÖжÏ
  
  TSC = 0x70;       //ÔÊÐíÖжϣ¬Í£Ö¹¼ÆÊý£¬¼ÆÊýÆ÷¸´Î»
  TMODH = 153;                                                        //8ms²úÉúÒ»´ÎÒç³öÖжÏ
  TMODL = 153;
  
  EnableInterrupts;         //¿ªÖжÏ
}

void interrupt 6 overflow_isr(void) {
TSC = 0x70;     //ÇåÖжϱêÖ¾

byte_counter = 0;            
romeoDriverState = ROMEO_READY;
semaphore = 1;
}
作个朋友
我在程序里循环检测semaphore是否为1,为1则跳转到自己想要达到的地址。
并且每次进中断,定时器计数器并没有运行到预设的值
作个朋友
cop关掉了
不知道原因
作个朋友
是这样的:
我接收数据,如果进定时器溢出中断表明接收超时,需要下次重新接收。
现在在中断内部设置断点,全速运行,当接收数据错误时进入中断。这时再次全速运行,接收错误再进中断。。。。。。。。。

但是我如果不在中断内部设置断点,全速运行,就会一直进中断。(我在中断内设置了点亮led用于测试,led一直亮)
作个朋友
我现在怀疑是中断返回后又开始了计数,但是有些语句(比如一些自己有用但是编译器认为已经重复的语句)可能被编译器优化掉了,
怎么才不会被优化掉?
作个朋友
设置断点是在接收错误的时候会进中断,但是不设置断点就一直进中断
作个朋友
不是一直发生接收错误,我估计是返回中断后在不该启动计数器的时候启动了计数器,可能某些语句被优化掉了
作个朋友
我当时也想这么做,楼上的试成功了没?
作个朋友
返回列表