存档:

1、开机动画调整;
2、界面切换逻辑优化;
3、新增设备上电后EEP状态处理;
This commit is contained in:
吴俊潮 2025-04-02 13:46:25 +08:00
parent 7d0c8795e1
commit 868daca080
6 changed files with 14033 additions and 13860 deletions

View File

@ -76,6 +76,9 @@ void key_functions_main(void);
//开机动画
void scr_init_run(void);
//进度条设置, start[0, end], end[start,100], interval[ms]结束后返回1
uint8_t init_set_bar(uint8_t start, uint8_t end, uint16_t interval);
//主界面
void scr_main_run(void);
@ -128,6 +131,9 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type);
//更新上下限&显示,曲线上下限,数值上下限
void up2down_update(int16_t low, int16_t up);
//eeprom状态监控
void eep_status_monitor(void);

View File

@ -98,8 +98,8 @@ typedef struct
//screen_init
uint8_t scr_init_flag; //初始界面标志,是否播放过开机动画
uint8_t scr_init_bar; //进度条实时值
uint8_t scr_init_cnt; //进度条计数
uint8_t bar_anime_step; //进度条动画步骤
uint8_t bar_anime_end_flag; //进度条动画结束标志
//screen_main
uint8_t runtime_seconds;
@ -224,7 +224,7 @@ extern PHYSICAL_QUANTITY RTD; //热电阻
#define KEY_OK 85
#define KEY_RIGHT 94
#define KEY_SWITCH 69
#define KEY_SOURCE -1
#define KEY_SOURCE 111
#define KEY_DOWN 86
#define KEY_BACK 70

View File

@ -14,8 +14,8 @@ void screen_data_init(void)
//screen_init
m5data.scr_init_flag = 0; //是否进行过初始化(开机动画)
m5data.scr_init_bar = 0; //进度条值0~100
m5data.scr_init_cnt = 0; //进度条计数(控制进度条动画)
m5data.bar_anime_step = 0; //进度条动画步骤
m5data.bar_anime_end_flag = 0; //进度条动画结束标志
//screen_main
main_data_init();
@ -538,38 +538,28 @@ void key_functions_main(void)
void scr_init_run(void)
{
if( m5data.scr_init_cnt <= SCREEN_INIT_CNT_MAX ) //进度条变化次数,在头文件中设置
//进度条动画结束后,界面切换至主界面
if( m5data.bar_anime_end_flag != 2 )
{
if( m5data.tick_prv == -1 )
if(m5data.bar_anime_end_flag == 0)
{
m5data.tick_prv = xTaskGetTickCount(); //记录起始时刻
}else
{
m5data.tick_cur = xTaskGetTickCount(); //记录当前时刻
if(m5data.tick_cur < m5data.tick_prv) //防止溢出当前tick小于前一刻的tick
if( init_set_bar(0, 30, 1500) )
{
m5data.tick_prv = -1; //溢出后复位并返回
m5data.tick_cur = -1;
return;
}
if(m5data.tick_cur - m5data.tick_prv >= 1000) //tick间隔达到目标后执行功能
{
m5data.tick_prv = -1;
m5data.tick_cur = -1;
m5data.scr_init_bar = m5data.scr_init_cnt * ( 100/SCREEN_INIT_CNT_MAX );
lv_bar_set_value(guider_ui.screen_init_bar_1, m5data.scr_init_bar, LV_ANIM_OFF);
m5data.scr_init_cnt ++;
m5data.bar_anime_end_flag = 1;
}
}
if(m5data.bar_anime_end_flag == 1)
{
if( init_set_bar(60, 100, 1500) )
{
m5data.bar_anime_end_flag = 2;
}
}
}
else
{
// //开机动画结束后,清除初始界面内部组件,保留对象,释放内存
// lv_obj_clean(guider_ui.screen_init);
@ -587,7 +577,90 @@ void scr_init_run(void)
}
}
//uint8_t ee_status_test = 0;
//进度条设置, start[0, end], end[start,100], interval[ms]结束后返回1
//时间轴:开始 -> 设置起点 -> 等待interval[ms] -> 设置终点 -> 等待interval[ms] -> 结束
uint8_t init_set_bar(uint8_t start, uint8_t end, uint16_t interval)
{
switch (m5data.bar_anime_step)
{
case 0:
{
if( m5data.tick_prv == -1 )
{
//如果当前值就是起点,那么直接设置终点,并转至下一步
if( lv_bar_get_value(guider_ui.screen_init_bar_1) == start )
{
lv_bar_set_value(guider_ui.screen_init_bar_1, end, LV_ANIM_ON);
m5data.bar_anime_step = 1;
}
else
{
lv_bar_set_value(guider_ui.screen_init_bar_1, start, LV_ANIM_ON);
m5data.tick_prv = xTaskGetTickCount(); //记录起始时刻
}
}else
{
m5data.tick_cur = xTaskGetTickCount(); //记录当前时刻
if(m5data.tick_cur < m5data.tick_prv) //防止溢出当前tick小于前一刻的tick
{
m5data.tick_prv = -1; //溢出后复位并返回
m5data.tick_cur = -1;
return 0;
}
if(m5data.tick_cur - m5data.tick_prv >= interval) //tick间隔达到目标后执行功能
{
m5data.tick_prv = -1;
m5data.tick_cur = -1;
lv_bar_set_value(guider_ui.screen_init_bar_1, end, LV_ANIM_ON);
m5data.bar_anime_step = 1;
}
}
}
break;
case 1:
{
if( m5data.tick_prv == -1 )
{
m5data.tick_prv = xTaskGetTickCount(); //记录起始时刻
}else
{
m5data.tick_cur = xTaskGetTickCount(); //记录当前时刻
if(m5data.tick_cur < m5data.tick_prv) //防止溢出当前tick小于前一刻的tick
{
m5data.tick_prv = -1; //溢出后复位并返回
m5data.tick_cur = -1;
return 0;
}
if(m5data.tick_cur - m5data.tick_prv >= interval) //tick间隔达到目标后执行功能
{
m5data.tick_prv = -1;
m5data.tick_cur = -1;
m5data.bar_anime_step = 0;
return 1;
}
}
}
break;
default:
break;
}
return 0;
}
void scr_main_run(void)
{
//实时更新设定值
@ -607,19 +680,24 @@ void scr_main_run(void)
//数值闪烁
//num_twinkle(); //1000ms
}
// EEPROM_CS_L;
// delay_cnt(10);
// eeprom_spi_writebyte(WRITE_ENABLE);
// delay_cnt(10);
// EEPROM_CS_H;
//eeprom状态监控
uint8_t ee_status_test = 0;
void eep_status_monitor(void)
{
EEPROM_CS_L;
delay_cnt(10);
eeprom_spi_writebyte(WRITE_ENABLE);
delay_cnt(10);
EEPROM_CS_H;
// EEPROM_CS_L;
// delay_cnt(10);
// eeprom_spi_writebyte(READ_STATUS);
// ee_status_test = eeprom_spi_readbyte();
// delay_cnt(10);
// EEPROM_CS_H;
EEPROM_CS_L;
delay_cnt(10);
eeprom_spi_writebyte(READ_STATUS);
ee_status_test = eeprom_spi_readbyte();
delay_cnt(10);
EEPROM_CS_H;
}
void runtime_show(void)
@ -650,7 +728,7 @@ void runtime_show(void)
sprintf(m5data.runtime_show, "%02d:%02d:%02d",m5data.runtime_hours, m5data.runtime_minutes, m5data.runtime_seconds);
lv_span_set_text(guider_ui.screen_main_spangroup_time_span, m5data.runtime_show);
input_value_show(); //显示当前测量值
eep_status_monitor();
}
}

View File

@ -41,6 +41,7 @@ void item0_data_init(void)
}
else
{
//针对不存在数据的情况在eeprom_device_check()中已经进行了处理
return;
}
}

View File

@ -233,6 +233,9 @@ void eeprom_datasave(void)
eeprom_writedata(VOL_V_LOW_ADDR, temp_h);
eeprom_writedata(VOL_V_LOW_ADDR + 8, temp_l);
//出现错误后,提前返回
if(eeprom_wrt_error_flag) return;
//VOL mV
temp_h = tabdata.item0_page0_vup[1] >> 8;
temp_l = tabdata.item0_page0_vup[1] & 0xFF;
@ -392,6 +395,9 @@ void eeprom_dataread(void)
temp_l = eeprom_readdata(VOL_V_LOW_ADDR + 8);
tabdata.item0_page0_vlow[0] = ( temp_h << 8 ) + temp_l;
//出现错误后,提前返回
if(eeprom_rd_error_flag) return;
//VOL mV
temp_h = eeprom_readdata(VOL_MV_UP_ADDR);
temp_l = eeprom_readdata(VOL_MV_UP_ADDR + 8);

File diff suppressed because it is too large Load Diff