STM32运行不正常[问题已解决]

2019-03-23 18:04发布

由于对STM32不是太精通,近来使用时,在测试时候遇到一个问题。

我使用的是STM2F103VET6,还有一个19264的液晶屏,一个矩阵的键盘。

先贴上两段代码
代码一:
//--------------------------系统设置菜单--------------------------------------
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;
        
     }
    }


}

}


上面两段代码中,有两个红 {MOD}的函数,我在测试的时候,就是用按键不停的从函数LCD_MENU_1();进入函数LCD_MENU_NO1();然后又由函数LCD_MENU_NO1();进入LCD_MENU_NO1();。

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

问题报告完毕,大家有没有遇到类似的问题。或者提供参考意见。



[ 本帖最后由 fsyicheng 于 2013-8-28 18:08 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
fsyicheng
2019-03-24 07:19
每个界面就是一个死循环,然后在检测按键状态,检测到对应的键值就跳入对应的界面,然后又是另外一个死循环,又检测对应的按键,检测到对应的键值就跳入对应的界面,我的测试的时候就是在两个菜单中不停切换,就是不停的按1,2,1,2。这样程序就挂了。郁闷中

一周热门 更多>