STM32测试时两界面不断切换导致系统崩溃,怎么回事呢?

2019-07-14 23:52发布


小弟最近刚刚学习STM32,不太精通,前几天在测试时候遇到一个问题。
我使用的是  STM2F103VET6  +    19264的液晶屏+ 矩阵的键盘。
下面两段代码中,有两个红 {MOD}的函数,我在测试的时候,就是用按键不停的从函数LCD_MENU_1();进入函数LCD_MENU_NO1();然后又由函数LCD_MENU_NO1();进入LCD_MENU_NO1();。

具体来说就是从两个界面中不停切换,但问题来了,在两个界面中切换了54次后,系统就崩毁了。而且从新上电后,继续测试,也是54次就崩毁了,尝试了很多次,切换的次数都是一样的,没有调试接口,所以用串口来测试了一下,每次都是在固定的地方就停止了。

情况大概就是这样的呢,大家有没有遇到类似的问题。或者提供参考意见。

先贴上两段代码
代码一:
//--------------------------系统设置菜单--------------------------------------
void LCD_MENU_1(void)
{
u8 key_temp;
LCD_CLEAR1();                     //清屏
USART_T(0X02);
//------1.系统参数-----------
LCD_SHOWSTRING(0,32,"---");
LCD_SHOWSTRING(0,56,"1.");
LCD_SHOW_ZI(0,72,ziti_xi);
LCD_SHOW_ZI(0,88,ziti_tong);
LCD_SHOW_ZI(0,104,ziti_can);
LCD_SHOW_ZI(0,120,ziti_shu);
LCD_SHOWSTRING(0,136,"---");

while(1)
{
key_temp=KEY_Scan();
   if(key_temp)
       {
     switch(key_temp)
        {
     case 0x01:LCD_MENU_NO1();break;
     case 0x0e:MENU_sudu_set();break;
     case 0x0d:MENU_dianji_set();break;
              
     }
    }

}

}



代码二:
//-------------------------主菜单------------------------------------------
void LCD_MENU_NO1(void)
{
u8 key_temp;
LCD_CLEAR1();
USART_T(0X01);

//------1.系统参数-----------
LCD_SHOWSTRING(0,0,"1.");
LCD_SHOW_ZI(0,16,ziti_xi);
LCD_SHOW_ZI(0,32,ziti_tong);
LCD_SHOW_ZI(0,48,ziti_can);
LCD_SHOW_ZI(0,64,ziti_shu);
//------2.端口检测-----------
LCD_SHOWSTRING(2,0,"2.");
LCD_SHOW_ZI(2,16,ziti_duan);
LCD_SHOW_ZI(2,32,ziti_kou);
LCD_SHOW_ZI(2,48,ziti_jian);
LCD_SHOW_ZI(2,64,ziti_ce);



while(1)
{
LCD_FLASH(6,176);       //光标闪烁定位
key_temp=KEY_Scan();
   if(key_temp)
       {
     switch(key_temp)
        {
     case 0x0e:LCD_MENU_1();break;
     case 0x0d:LCD_MENU_2();break;
        
     }
    }


}

}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。