阅读:1104回复:0
请问高手,同一个hex文件,写入芯片运行正确,在仿真器上却不对,为什么。我只试过EasyPack仿真器,别的我没有!
请问:
周立功套件中的 usb_demo.exe smart.exe 把这2个程序写入芯片,插在板子运行正确。 但我用EAsyPack仿真器来运行调入来运行他们,则不正确。目标板就是套件的板子,什么环节都不动。 我的仿真器肯定是正常的,因为任何地方都不动,我重新调入一个简单的控制套件板子上LED的测试性小程序,是正确的。 请问高手,这是什么原因,如何解决! 细节是这样的: 用周立功的程序: 我单步执行,发现在main主程序中, MCU_D12CS = 0x1; //可以走到这里, MCU_D12CS = 0x0; //从这里立刻就进入中断了 usb_isr() interrupt 0 void main(void) { P0 = 0xFF;//初始化I/O口 P1 = 0xFF; P2 = 0xFF; P3 = 0xFF; MCU_D12CS = 0x0; D12SUSPD = 0; IT0 = 0;//初始化中断 EX0 = 1; PX0 = 0; EA = 1; MCU_D12CS = 0x1; //可以走到这里, MCU_D12CS = 0x0; //从这里立刻就进入中断了 usb_isr() interrupt 0 D12_SetDMA(0x0); bEPPflags.value = 0; reconnect_USB();//联接USB总线 } 另外:用phlips的程序: 主程序中,单步执行刚走到 最前边的:init_special_interrupts(); 就进入了 void init_unconfig(void) 我往回推,发现最早间接调用void init_unconfig(void)的地方,应该是 if (bEPPflags.bits.setup_packet){ DISABLE; bEPPflags.bits.setup_packet = 0; ENABLE; control_handler(); D12SUSPD = 1; } // if setup_packet 但这几行在主程序中,要非常靠后,根本还不应该到这里呢?是什么原因,调动了void init_unconfig(void) 盼高手答复我。谢谢您的慷慨指点新手。 |
|