本帖最后由 caijize 于 2013-12-16 10:41 编辑
最近需要给产品新加个“空中升级”的功能,自己长写了个简单的程序来测试,下载运行都成功了,但应用程序运行到一半却没反应,请高手们帮我看一下,问题可能出在哪里。
应用程序主函数如下:
int main(void){
u32 i = 0;
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);
SystemInit();
LED_Init();
while(1){ // (1)
LED_SetRedOn();
LED_SetGreenOff();
while(i<0x2ff4){ //(2)
if(i>0x2f4){ //(4)
LED_SetGreenOn();
// LED_SetRedOff();
}
i++;
}
LED_SetGreenOff();
LED_SetRedOff();
while(i>0){ //(3)
i--;
}
}
}
经过多次测试,程序一开始能正常运行点亮红灯跟绿灯,但如果第二个WHILE循环条件大于0x2f4的话循环跳不出来,同样如果条件(4)的值大于0x2f4的话绿灯不被点亮。而只要把循环(2)的条件设为小于0x2f4的话循环就能跳出,把灯都灭了,但后面的循环就跳不出来。
我已经按照网上说的将应用程序的起始地址设成了存放的地址,偏移地址VECT_TAB_OFFSET也已经设了,是不是还有其它什么遗漏的地方呢?
先谢谢各位大侠们指教!!
|