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

奇怪的问题

奇怪的问题

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
是smac4.1c中的哪个应用程序?我没有看见和你贴出来的一摸一样的程序
但是从你贴的程序看,应该是你断点选取的问题
断点2所在的函数是把mcu的时钟从内部切换到外部,这个过程需要一定的时钟周期,你设置断点后,肯定和全速的状态条件发生了变化,没法得到一致的值。
这是自己写的一个编译通过了的程序
我说的状态不一致,不是指断点1或断点2这些中间状态,而是指通过两种不同的方式都执行到断点3,但3gu8TRxMODE的值不一样
gu8TRxMODE这个值是取的什么值。我大致了解你的过程,我的意思是,因为BDM控制的是MCU的运行,并不能对MC13192控制,MCU和13192之间通过SPI交互,那么当MCU中间暂停的时候,13192并不是暂停的,如果你的变量值和13192的寄存器值,或者MCU的时钟周期值有关的话,这个值在暂停以后肯定会有变化的。
返回列表