Board logo

标题: 奇怪的问题 [打印本页]

作者: 微毫度十分个扩大飞机公婆    时间: 2006-12-25 10:23     标题: 奇怪的问题

case LOOK_AROUND:
UseMcuClock();
MLMEHibernateRequest(); //MC13192 now consuming 3 uA
MCUDelay (WALKON);//long_timer(300); //wake up once per second & look around for request
断点1: MLMEWakeRequest();
断点2: UseExternalClock();
MLMERXEnableRequest(&rx_packet, 0x); // 25000 = .1s timeout
MCUDelay (WALKON);// LOW_POWER_WHILE; //Stay until Interrupted for TO or data.
断点3: break;

有个奇怪的问题:我单步运行这各程序,最后gu8TRMODE==2,但全速运行到断点3后gu8TRMODE==132
更奇怪的是我从断点1全速运行到断点3gu8TRMODE==132,但运行到断点2再全速运行到断点3gu8TRMODE==2
斑竹能不能在实际调试一下这个程序后回答一下,谢谢!
附:13192SARD,SMAC4.1C

作者: seuafu2005    时间: 2006-12-25 11:27

是smac4.1c中的哪个应用程序?我没有看见和你贴出来的一摸一样的程序
但是从你贴的程序看,应该是你断点选取的问题
断点2所在的函数是把mcu的时钟从内部切换到外部,这个过程需要一定的时钟周期,你设置断点后,肯定和全速的状态条件发生了变化,没法得到一致的值。
作者: 微毫度十分个扩大飞机公婆    时间: 2006-12-27 22:31

这是自己写的一个编译通过了的程序
我说的状态不一致,不是指断点1或断点2这些中间状态,而是指通过两种不同的方式都执行到断点3,但3gu8TRxMODE的值不一样
作者: seuafu2005    时间: 2006-12-28 10:58

gu8TRxMODE这个值是取的什么值。我大致了解你的过程,我的意思是,因为BDM控制的是MCU的运行,并不能对MC13192控制,MCU和13192之间通过SPI交互,那么当MCU中间暂停的时候,13192并不是暂停的,如果你的变量值和13192的寄存器值,或者MCU的时钟周期值有关的话,这个值在暂停以后肯定会有变化的。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0