程序执行几秒后卡死!!

2019-10-16 05:56发布

我用STM32f103的RTC做了一个用LCD显示的时钟,但是程序执行后十几秒后无缘无故就卡死了,按什么键都不管用,但是卡死之后过一段时间,程序就会恢复执行,然后过一段时间又会卡死,一直循环,这是为什么??只要主循环里有LCD显示,就会出现这种情况,把LCD显示去掉,程序就不卡死了。求大神帮!!

我用的是TFT3.5寸彩屏
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
Kathy
2019-10-17 05:53
憨厚诚实大叔 发表于 2016-11-30 14:00
在里面增加别的操作,你先确定他能不能按时进入这个if语句。这种小问题自己想办法一步步排除,别自己什么 ...

我已经调了一天了,我能想到的方法都试了,还是解决不了。
程序在显示函数中的随机位置卡死:
void LCD_Show_Data(void)
{

        u8 a[2]={'.',''},b[2]={'0',''};
        //1#
        LCD_ShowNum(140,130,Data1.temperature,2,BLUE);
        LCD_ShowNum(140,150,Data1.humidity,2,BLUE);
        LCD_ShowNum(140,170,Data1.Voltage/100,1,BLUE);
  GUI_Show12ASCII(148,170,a,BLUE,BLACK);
        LCD_ShowNum(156,170,Data1.Voltage%100,2,BLUE);
        //2#
        LCD_ShowNum(140,225,Data2.temperature,2,BLUE);
        LCD_ShowNum(140,245,Data2.humidity,2,BLUE);
        LCD_ShowNum(140,265,Data2.Voltage/100,1,BLUE);
        GUI_Show12ASCII(148,265,a,BLUE,BLACK);
        LCD_ShowNum(156,265,Data2.Voltage%100,2,BLUE);
        //RTCêy¾Y
                        //
                        LCD_ShowNum(40,65,calendar.w_year,4,BLUE);
                        LCD_ShowNum(80,65,calendar.w_month,2,BLUE);
                        LCD_ShowNum(104,65,calendar.w_date,2,BLUE);
                        RTC_ShowWeek(140,65,calendar.week,BLUE);
               
                        //       
                        LCD_ShowNum(40,85,calendar.hour,2,BLUE);
                        LCD_ShowNum(64,85,calendar.min,2,BLUE);
                        LCD_ShowNum(88,85,calendar.sec,2,BLUE);
                       
                        //为了美观,时间补零
                        if(calendar.sec<10)
                                GUI_Show12ASCII(88,85,b,BLUE,BLACK);
                        if(calendar.min<10)
                                GUI_Show12ASCII(64,85,b,BLUE,BLACK);
                        if(calendar.hour<10)
                                GUI_Show12ASCII(40,85,b,BLUE,BLACK);
               
}

一周热门 更多>