用mini板调试gprs模块,不知道什么原因主函数里的程序会自动运行,液晶屏会一遍遍的刷新,LED亮灭循环,求高手指点:
int main(void)
{
// u8 key;
// u8 reclen=0;
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化按键
LCD_Init(); //初始化LCD
usmart_dev.init(72); //初始化USMART
USART2_Init(36,9600);
POINT_COLOR=RED;
LCD_ShowString(30,30,200,16,16,"ALIENTEK STM32 ^_^");
LCD_ShowString(30,50,200,16,16,"GPRS COM TEST");
LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
POINT_COLOR=BLUE; //断点1
//检测AT指令是否应答
// while(mg323_send_cmd("AT","OK",100)) //无应答
{
LCD_ShowString(40,90,200,16,16,"LINK FAILED!!!");
delay_ms(400);
LCD_ShowString(40,110,200,16,16,"ANOTHER TRY TO LINK...");
delay_ms(400);
}
LCD_Fill(40,110,40+200,16+110,WHITE);
LCD_ShowString(40,110,200,16,16,"LINK SUCESS!!!");
// if(mg323_init_show(20,150)==0)
{
// while(1)
{
LED0=!LED0;
delay_ms(1000); //断点2
}
}
}
我用了jtag在线调试,运行到第二个断点之后单步执行,如下
接着:
然后再执行几步又回到了主函数,不懂汇编,求高手指点这个是什么原因?
|