2019-10-16 05:56发布
Kathy 发表于 2016-11-30 13:49 还是不行
憨厚诚实大叔 发表于 2016-11-30 14:00 在里面增加别的操作,你先确定他能不能按时进入这个if语句。这种小问题自己想办法一步步排除,别自己什么 ...
最多设置5个标签!
while(1){
if(time>=200){
time=0;
LCD_Show_Data();
}
}
在里面增加别的操作,你先确定他能不能按时进入这个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);
}
另外写程序的时候, 实时记得代码的带宽. 你这明显就是 有些代码带宽不足, 有些代码 又过于随机性的突然占用太多MCU运算资源.
看看刷新一次要多长时间,怀疑超过了200ms另外,如上面所说,== 改为 >= 更严谨一点
一周热门 更多>