因此、我的软件的主体循环运行。 循环会持续一段时间。 对于本次对话、它几乎是一个无限循环。
在循环发生之前、它实际上只是设置 TimerB、RTC 和 GPIO 引脚。
一旦我们到达环路、这就是流程
如果 USB 已连接且!burse_cycle 如果 !USB 已连接且 BURST_CYCLE、则进入菜单模式 如果 !burse_cycle、则禁用 burse_cycle 准备4 LPM 如果!USB 已连接且未达到 lpm 时间 输入 LPM 退出 LPM 计算 LPM 中的时间并添加到系统时间 唤醒 如果 USB 已连接且!burse_cycle 在回路 准备开始时重新启动,以便扫描 预定的时间段,或直到!USB 连接 的结束扫描功能在 回路开始时开始
这里是循环本身的实际代码。
而(localrecord < 0xFFFF)//FFFF 是磁盘上可能的最后一条记录 { //检查 USB 电缆是否连接到器件,但不在 terminal_debug 中。 IF (((P2IN 和 BIT4)&&!BURST_CYCLE) { run_menu(); 继续; } 否则、如果(!(P2IN & BIT4)&& BURST_CYCLE) { BURST_CYCLE = 0; 继续; } //连接或断开 USB 电缆但退出主菜单而不处于终端调试模式时的正常操作。 否则、如果(!burse_cycle) { prep_4_sleep(); while (!(P2IN & BIT4)&&(lpm_count < lpm_multiplier)) { enter_low_power_mode(); CALC_SYS_TIME (LPM_PERIOD); LPM_COUNT++; } LPM_COUNT = 0; WAKE_UP(); delay_ms (500); IF (((P2IN 和 BIT4)&&!BURST_CYCLE) 继续; } prep_scan(); start_read = time2Sec (); readFlag = 1; 操作 { read_sensor(); if (readFlag) readFlag =计数器(START_READ、READTIME); if (!(P2IN & BIT4)&&(numOfComReads ==1)) 中断; }while (readFlag ||(numOfComReads!=1)); end_scan(); }
我看到的是应用本身在随机时间进行重置。 它将正常运行、然后从 Main 方法的开头全部启动。
现在、我知道 LPM 的软件示例不使用循环、而是在预定的时间进入 LPM、退出、主菜单会自行重新启动。 不是我的人预先确定他们希望通过使用循环来实现软件。 而不是使用芯片的自动重启方面。
如何防止从主方法的开头重新启动软件?
请记住、我认为 while 循环令人兴奋、因此我在 while 循环之外抛出了一个断点、它从未跳过。
现在我已经想到了、我很确定它不是从 Main Method 的开头重新启动、而是重新加载整个软件包。 我对此是否正确?