This commit is contained in:
吴俊潮 2025-04-27 16:09:52 +08:00
parent fa601e36d8
commit f3964c5257
9 changed files with 15571 additions and 15435 deletions

View File

@ -5,13 +5,8 @@
//初始界面
//{
//初始界面编号0开机动画
#define SCREEN_INIT 0
//开机动画进度条计数次数
#define SCREEN_INIT_CNT_MAX 4
//}
//主界面
@ -46,12 +41,6 @@
//闪烁次数上限
#define TWINKLE_CNT_MAX 10
//数码管数值增加(正负情况交替时up和down两个键起到的作用会对调因此专门定义参数用于区分数值的增减)
#define NIXIE_INCREASE 1
//数码管数值增加(正负情况交替时up和down两个键起到的作用会对调因此专门定义参数用于区分数值的增减)
#define NIXIE_DECREASE 0
//数码管闪烁功能使能
#define NIXIE_CUBE_ENABLE 0

View File

@ -7,11 +7,8 @@ extern int16_t save_cnt;
extern int16_t reset_cnt;
//设置界面
#define SCREEN_SETTING 2
//{
//设置界面编号2详细设置菜单
#define SCREEN_SETTING 2
//当前页码
#define PAGE_PV 99
@ -200,6 +197,7 @@ void deal_data_save(void);
//执行复位功能
void deal_data_reset(void);
#endif

View File

@ -88,6 +88,54 @@ typedef enum
RTD_DC //热电阻摄氏度
}SIG_FUNCTIONS_TYPE;
typedef enum
{
KEY_OUT = 0,
KEY_UP,
KEY_MENU,
KEY_IN,
KEY_LEFT,
KEY_OK,
KEY_RIGHT,
KEY_SWITCH,
KEY_SOURCE,
KEY_DOWN,
KEY_BACK,
KEY_NONE,
KEY_ALL
}KEYS_TAG;
typedef enum
{
KEY_OUT_VAL = 76,
KEY_UP_VAL = 84,
KEY_MENU_VAL = 68,
KEY_IN_VAL = 78,
KEY_LEFT_VAL = 77,
KEY_OK_VAL = 85,
KEY_RIGHT_VAL = 94,
KEY_SWITCH_VAL = 69,
KEY_SOURCE_VAL = 111,
KEY_DOWN_VAL = 86,
KEY_BACK_VAL = 70,
KEY_NONE_VAL = 0,
KEY_ALL_VAL = 250
}KEYS_VALUE;
typedef enum
{
KEY_STATUS_DISABLE = 0,
KEY_STATUS_ENABLE
}KEYS_STATUS;
typedef struct
{
KEYS_TAG tag;
KEYS_VALUE value;
KEYS_STATUS status;
}KEYS;
typedef struct
{
//general
@ -95,6 +143,7 @@ typedef struct
int tick_prv; //前一个时刻
int tick_cur; //当前时刻
uint8_t menu_reset_flag; //复位标志在keil的debug中手动写入
KEYS_STATUS key_sts[11]; //按键状态,是否使能
//screen_init
uint8_t scr_init_flag; //初始界面标志,是否播放过开机动画
@ -125,7 +174,6 @@ typedef struct
uint8_t sign_flag_out; //输出信号符号位标志0->不显示1->显示负号
//screen_setting
uint8_t key_setting_enable; //按键功能使能标志
}MENU_DATA;
@ -227,20 +275,7 @@ extern PHYSICAL_QUANTITY RES; //电阻,Ω
extern PHYSICAL_QUANTITY FRE; //频率KHz
extern PHYSICAL_QUANTITY TC[8]; //热电偶共8种
extern PHYSICAL_QUANTITY RTD; //热电阻
extern uint16_t screen_switch_wait; //屏幕切换的等待时间
//按键值
#define KEY_OUT 76
#define KEY_UP 84
#define KEY_MENU 68
#define KEY_IN 78
#define KEY_LEFT 77
#define KEY_OK 85
#define KEY_RIGHT 94
#define KEY_SWITCH 69
#define KEY_SOURCE 111
#define KEY_DOWN 86
#define KEY_BACK 70
extern KEYS key_pv;
//语言
#define MENU_SIMPLYFY_CHINESE 0
@ -249,7 +284,7 @@ extern uint16_t screen_switch_wait; //屏幕切换的等
//绝对值计算
#define MY_ABS(pa) ( ( (pa) >= 0 )?( (pa) ):( 0 - (pa) ) )
//模拟正式产品,实现基本功能
//屏幕显示
void screen_run(void);
//计算a的b次方
@ -288,6 +323,15 @@ float32 temp2ohm(float32 temp);
//初始化打包
void my_inits_gather(void);
//按键数据类型转换
void key_char2struct(void);
//按键使能查询
KEYS_STATUS key_valid(KEYS_TAG key_t);
//按键状态配置
void key_config(KEYS_TAG key_t, KEYS_STATUS sts);

View File

@ -11,6 +11,10 @@ void screen_data_init(void)
m5data.tick_cur = -1; //当前时刻,用于计时
m5data.menu_reset_flag = 0; //复位使能标志置1后复位复位完成后变回0
physical_quantity_init();
for (uint8_t i = 0; i < 11; i++)
{
m5data.key_sts[i] = KEY_STATUS_ENABLE;
}
//screen_init
m5data.scr_init_flag = 0; //是否进行过初始化(开机动画)
@ -20,13 +24,11 @@ void screen_data_init(void)
//screen_setting
tab_data_init();
m5data.key_setting_enable = 0; //按键默认不使能
}
//主界面参数初始化
void main_data_init(void)
{
m5data.key_main_enable = 0; //按键默认不使能
m5data.runtime_seconds = 0; //秒
m5data.runtime_minutes = 0; //分钟
m5data.runtime_hours = 0; //小时
@ -36,11 +38,9 @@ void main_data_init(void)
m5data.io_cursor = 3; //当前游标位置,[0000,000]:0~6
m5data.io_cursor_prv = 3; //前一时刻游标位置
#if NIXIE_CUBE_ENABLE
m5data.twk_flag = 0; //0停止闪烁1开始闪烁
m5data.twk_flip = 0; //0显示1不显示
m5data.twk_cnt = 0; //闪烁计数
#endif
m5data.io_on2off = IO_OFF; //初始为关闭状态
m5data.io_mode = IO_OUTPUT; //默认工作模式0输入IN1输出OUT
m5data.sign_flag_in = 0; //默认不显示符号
m5data.sign_flag_out = 0; //默认不显示符号
@ -50,8 +50,6 @@ void main_data_init(void)
m5data.o_numbers[i] = 0; //输出值/设定值
}
m5data.io_on2off = IO_OFF; //初始为关闭状态
m5data.io_mode = IO_OUTPUT; //默认工作模式0输入IN1输出OUT
m5data.input_mode = CUR.tag; //输入功能初始为电流模式
m5data.input_mode_type = CUR.typ; //电流单位为mA
m5data.output_mode = CUR.tag; //输出功能初始为电流模式
@ -60,25 +58,31 @@ void main_data_init(void)
//绘图数据初始化
plot_data_init();
#if NIXIE_CUBE_ENABLE
m5data.twk_flag = 0; //0停止闪烁1开始闪烁
m5data.twk_flip = 0; //0显示1不显示
m5data.twk_cnt = 0; //闪烁计数
#endif
}
//绘图数据初始化
void plot_data_init(void)
{
//chart组件显示int,绘图值
//绘图值
pltdata.y_pri_low = 0; //主轴的显示下限0通常不做修改
pltdata.y_pri_up = 100; //主轴的显示上限100通常不做修改
pltdata.y_scd_low = 0; //副轴的显示下限0通常不做修改
pltdata.y_scd_up = 100; //副轴的显示上限100通常不做修改
pltdata.y_pri_value = 0; //主轴的实时显示值0~100
pltdata.y_pri_value_prv = 0; //前一时刻的曲线绘图值
pltdata.y_pri_value_prv = 0; //主轴前一时刻的曲线绘图值
pltdata.y_scd_value = 0; //副轴的实时显示值0~100
pltdata.y_scd_value_prv = 0; //前一时刻的曲线绘图值
pltdata.y_scd_value_prv = 0; //前一时刻的实时显示值。
pltdata.y_scd_value_prv = 0; //副轴前一时刻的曲线绘图值
pltdata.pri_wait_tick = 0; //主轴等待滴答数
pltdata.scd_wait_tick = 0; //副轴等待滴答数
//chart组件显示int,实际值
//实际值
pltdata.yreal_pri_low = 0; //实际值的显示下限,主轴
pltdata.yreal_pri_up = 0; //实际值的显示上限,主轴
pltdata.yreal_scd_low = 0; //实际值的显示下限,副轴
@ -99,6 +103,10 @@ void menu_reset(void)
//加载初始界面
setup_scr_screen_init(&guider_ui);
scr_main_recover();
delay_cnt(200);
lv_scr_load(guider_ui.screen_init);
//释放内存
@ -106,13 +114,13 @@ void menu_reset(void)
{
case SCREEN_MAIN:
{
lv_obj_del(guider_ui.screen_main);
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
}
break;
case SCREEN_SETTING:
{
lv_obj_del(guider_ui.screen_setting);
lv_obj_add_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
}
break;
@ -127,13 +135,15 @@ void menu_reset(void)
//KEY_MAIN
void key_functions_main(void)
{
if( key_valid(key_pv.tag) == KEY_STATUS_DISABLE ) return;
uint8_t cursor_temp = 0; //临时游标,替代枚举变量进行加减运算
switch (key)
switch (key_pv.tag)
{
case KEY_OUT:
{
key = 0;
key_pv.tag = KEY_NONE;
//交替按下 in 和 out 时,只改变输入/输出,连续按同一个键的时候才改变类型
if(m5data.io_mode == IO_INPUT)
@ -202,7 +212,7 @@ void key_functions_main(void)
case KEY_UP:
{
key = 0;
key_pv.tag = KEY_NONE;
if(m5data.io_mode == IO_INPUT)
{
@ -219,8 +229,8 @@ void key_functions_main(void)
case KEY_MENU:
{
if( m5data.tick_prv == -1 )
{
key_pv.tag = KEY_NONE;
//加载菜单界面
lv_scr_load(guider_ui.screen_setting);
scr_setting_recover();
@ -229,39 +239,13 @@ void key_functions_main(void)
//隐藏主界面对象
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
//按键标志置0等待一段时间后再切换至设置菜单的按键功能
m5data.key_main_enable = 0;
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;
}
if( (m5data.tick_cur - m5data.tick_prv) >= screen_switch_wait) //tick间隔达到目标后执行功能
{
//等待结束,切换成设置菜单的按键功能
m5data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单
m5data.key_setting_enable = 1;
key = 0;
m5data.tick_prv = -1;
m5data.tick_cur = -1;
}
}
}
break;
case KEY_IN:
{
key = 0;
key_pv.tag = KEY_NONE;
if(m5data.io_mode == IO_OUTPUT)
{
@ -332,7 +316,7 @@ void key_functions_main(void)
case KEY_LEFT:
{
key = 0;
key_pv.tag = KEY_NONE;
if(m5data.io_mode == IO_INPUT)
{
@ -356,7 +340,7 @@ void key_functions_main(void)
case KEY_OK:
{
key = 0;
key_pv.tag = KEY_NONE;
//主界面用OK键控制开关ON&OFF
if(m5data.io_on2off == IO_ON)
@ -374,7 +358,7 @@ void key_functions_main(void)
case KEY_RIGHT:
{
key = 0;
key_pv.tag = KEY_NONE;
if(m5data.io_mode == IO_INPUT)
{
@ -397,7 +381,7 @@ void key_functions_main(void)
case KEY_SWITCH:
{
key = 0;
key_pv.tag = KEY_NONE;
switch (m5data.io_mode) //输入、输出模式切换
{
@ -526,13 +510,13 @@ void key_functions_main(void)
case KEY_SOURCE:
{
//电源开关靠硬件电路实现,此处可做预留
key = 0;
key_pv.tag = KEY_NONE;
}
break;
case KEY_DOWN:
{
key = 0;
key_pv.tag = KEY_NONE;
if(m5data.io_mode == IO_INPUT)
{
@ -550,13 +534,24 @@ void key_functions_main(void)
case KEY_BACK: //闲置,预留
{
key = 0;
key_pv.tag = KEY_NONE;
}
break;
case KEY_ALL: //闲置,预留
{
key_pv.tag = KEY_NONE;
}
break;
case KEY_NONE: //闲置,预留
{
}
break;
default:
{
key = 0;
key_pv.tag = KEY_NONE;
}
break;
}
@ -587,16 +582,23 @@ void scr_init_run(void)
case 2:
{
//加载主界面和设置界面的内容
//配置主界面的内容
setup_scr_screen_main(&guider_ui);
delay_cnt(200);
setup_scr_screen_setting(&guider_ui);
//不加延时有概率卡死
delay_cnt(200);
//配置设置界面的内容
setup_scr_screen_setting(&guider_ui);
//不加延时有概率卡死
delay_cnt(200);
//加载主界面
lv_scr_load(guider_ui.screen_main);
//额外处理,也用于界面切换
scr_main_recover();
//开机动画结束后,隐藏初始界面
lv_obj_add_flag(guider_ui.screen_init, LV_OBJ_FLAG_HIDDEN);
init_step = 3;
@ -604,37 +606,9 @@ void scr_init_run(void)
break;
case 3:
{
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;
}
if(m5data.tick_cur - m5data.tick_prv >= screen_switch_wait) //tick间隔达到目标后执行功能
{
init_step = 4;
m5data.tick_prv = -1;
m5data.tick_cur = -1;
}
}
}
break;
case 4:
{
m5data.scr_init_flag = 1; //开机动画结束,只执行一次
m5data.scr_now = SCREEN_MAIN; //开机动画结束后,默认进入主界面
m5data.key_main_enable = 1;
init_step = 0;
}
@ -1404,6 +1378,19 @@ void scr_main_recover(void)
setting_items_check(99, tabdata.item_cursor);
tabdata.item_cursor = 0;
tabdata.item_cursor_prv = 99;
//使能所有按键
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_IN, KEY_STATUS_ENABLE);
key_config(KEY_OUT, KEY_STATUS_ENABLE);
key_config(KEY_SOURCE, KEY_STATUS_ENABLE);
key_config(KEY_MENU, KEY_STATUS_ENABLE);
key_config(KEY_SWITCH, KEY_STATUS_ENABLE);
}
//颜色更新

View File

@ -24,6 +24,7 @@ void tab_data_init(void)
tabdata.content_focus = 0; //默认无焦点
//设置界面的初始默认值
//EEPROM部分
eeprom_item_data_init();
@ -31,23 +32,19 @@ void tab_data_init(void)
tabdata.item0_page0_vunit = VOLTAGE_V; //电压单位
tabdata.item0_page1_TCtype = TC_K; //默认为K类型的热电偶
//ITEMS_1注释项位于EERPOM读取
// tabdata.item1_page0_sample_interval = 1500; //ms
// tabdata.item1_page0_plot_num = 5; //曲线上同时显示的点数
// tabdata.item1_page0_color_input = COLOR_YELLOW; //输入曲线颜色
// tabdata.item1_page0_color_output = COLOR_BLUE; //输出曲线颜色
//ITEMS_1部分内容位于EERPOM读取
//ITEMS_2注释项位于EERPOM读取
//ITEMS_2部分内容位于EERPOM读取
tabdata.item2_page0_saveflag = 0;
memset(tabdata.log_time, 0, sizeof(tabdata.log_time));
memset(tabdata.input_log_value, 0, sizeof(tabdata.input_log_value));
memset(tabdata.output_log_value, 0, sizeof(tabdata.output_log_value));
tabdata.item2_page0_resetflag = 0;
//ITEMS_3注释项位于EERPOM读取
//ITEMS_3部分内容位于EERPOM读取
tabdata.item3_page0_lightflag = 0; //照明状态标志0熄灭1开启
LIGHT_OFF;
// tabdata.item3_page0_language = MENU_SIMPLYFY_CHINESE; //语言类型
}
@ -118,20 +115,16 @@ void eeprom_item_data_init(void)
//KEY_SETTING
void key_functions_setting(void)
{
if( (tabdata.item2_page0_saveflag == 1) || (tabdata.item2_page0_resetflag == 1) )
{
//复位和保存过程中禁用按键
return;
}
if( key_valid(key_pv.tag) == KEY_STATUS_DISABLE ) return;
switch (key)
switch (key_pv.tag)
{
case KEY_BACK:
{
key_pv.tag = KEY_NONE;
//从设置界面返回主界面
if(tabdata.content_cursor == 99)
{
if( m5data.tick_prv == -1 )
{
//加载主界面
lv_scr_load(guider_ui.screen_main);
@ -141,39 +134,10 @@ void key_functions_setting(void)
//隐藏设置界面对象
lv_obj_add_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
//设置菜单按键使能置零,等待一段时间后切换至主界面的按键功能
m5data.key_setting_enable = 0;
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;
}
if( (m5data.tick_cur - m5data.tick_prv) >= screen_switch_wait) //tick间隔达到目标后执行功能
{
//等待结束,切换至主界面的按键功能
m5data.scr_now = SCREEN_MAIN;
m5data.key_main_enable = 1;
key = 0;
m5data.tick_prv = -1;
m5data.tick_cur = -1;
}
}
}
else
{
key = 0;
//当不存在焦点时,从内容选择返回选项卡选择
if(tabdata.content_focus == 0)
{
@ -250,7 +214,7 @@ void key_functions_setting(void)
case KEY_UP:
{
key = 0;
key_pv.tag = KEY_NONE;
//内部游标为99时说明未选中任何一个选项卡此时的up和down用于切换选项卡
if(tabdata.content_cursor == 99)
@ -320,7 +284,7 @@ void key_functions_setting(void)
case KEY_DOWN:
{
key = 0;
key_pv.tag = KEY_NONE;
//内部游标为99时说明未选中任何一个选项卡此时的up和down用于切换选项卡
if(tabdata.content_cursor == 99)
@ -388,7 +352,7 @@ void key_functions_setting(void)
case KEY_OK:
{
key = 0;
key_pv.tag = KEY_NONE;
if(tabdata.content_cursor == 99)
{
@ -396,6 +360,20 @@ void key_functions_setting(void)
tabdata.content_cursor = 0;
tabdata.content_cursor_prv = 99;
setting_contents_check(tabdata.content_cursor, tabdata.content_cursor_prv);
//进入内容选择状态
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_DISABLE);
key_config(KEY_RIGHT, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
else
{
@ -435,13 +413,27 @@ void key_functions_setting(void)
default:
break;
}
//进入内容修改状态
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_DISABLE);
key_config(KEY_UP, KEY_STATUS_DISABLE);
key_config(KEY_DOWN, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
}
break;
case KEY_LEFT:
{
key = 0;
key_pv.tag = KEY_NONE;
if( tabdata.content_cursor == 99 )
{
@ -498,7 +490,7 @@ void key_functions_setting(void)
case KEY_RIGHT:
{
key = 0;
key_pv.tag = KEY_NONE;
if( tabdata.content_cursor == 99 )
{
@ -552,9 +544,13 @@ void key_functions_setting(void)
}
break;
case KEY_NONE:
{
}
default:
{
key = 0;
key_pv.tag = KEY_NONE;
}
break;
}
@ -1129,9 +1125,20 @@ void scr_setting_recover(void)
tabdata.item_page = 1;
setting_items_page(ITEMS_0 ,tabdata.item_page);
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_DISABLE);
key_config(KEY_RIGHT, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
uint8_t reset_step = 0, save_step = 0;
void scr_setting_run(void) //详细设置界面
{
//处理保存事件
@ -1144,6 +1151,8 @@ void scr_setting_run(void) //详细设置界面
//执行保存功能
void deal_data_save(void)
{
uint8_t save_step = 0;
if(tabdata.item2_page0_saveflag == 1)
{
if(save_step == 0)
@ -1153,6 +1162,9 @@ void deal_data_save(void)
//执行保存
//eeprom_datasave();
eeprom_datasave_changed();
//关闭所有按键
key_config(KEY_ALL, KEY_STATUS_DISABLE);
}
else
{
@ -1176,7 +1188,8 @@ void deal_data_save(void)
set_item2_text(DATA_SAVE);
}
save_step = 0;
//使能所有按键
key_config(KEY_ALL, KEY_STATUS_ENABLE);
}
}
@ -1186,6 +1199,8 @@ void deal_data_save(void)
//执行复位功能
void deal_data_reset(void)
{
uint8_t reset_step = 0;
if(tabdata.item2_page0_resetflag == 1)
{
if(reset_step == 0)
@ -1198,6 +1213,9 @@ void deal_data_reset(void)
LIGHT_OFF;
tabdata.item0_page0_vunit = VOLTAGE_V; //电压单位
tabdata.item0_page1_TCtype = TC_K; //默认为K类型的热电偶
//关闭所有按键
key_config(KEY_ALL, KEY_STATUS_DISABLE);
}
else
{
@ -1246,7 +1264,8 @@ void deal_data_reset(void)
set_item2_text(INPUT_LOG);
set_item2_text(OUTPUT_LOG);
reset_step = 0;
//使能所有按键
key_config(KEY_ALL, KEY_STATUS_ENABLE);
}
}
}

View File

@ -1,7 +1,7 @@
#include "apps_gather.h" //用于头文件打包汇总,函数声明和变量定义
// lv_conf.h { line:282->CPU&FPS; line:289->MEM used }
//lv_obj_scroll.c, SCROLL_ANIM_TIME_MIN & SCROLL_ANIM_TIME_MAX
KEYS key_pv;
PHYSICAL_QUANTITY VOL[2]; //电压VOL[0]-V, VOL[1]-mV
PHYSICAL_QUANTITY CUR; //电流mA
PHYSICAL_QUANTITY RES; //电阻,Ω
@ -146,13 +146,12 @@ void physical_quantity_init(void)
RTD.pv = 0;
}
//切换屏幕的等待时间ms
uint16_t screen_switch_wait = 200;
void screen_run(void)
{
//手动触发显示内容复位
if(m5data.menu_reset_flag)
{
menu_reset(); //触发显示内容复位
menu_reset();
m5data.menu_reset_flag = 0;
@ -161,43 +160,26 @@ void screen_run(void)
if(m5data.scr_init_flag == 0)
{
scr_init_run(); //播放开机动画
//未播放过开机动画的情况下,播放开机动画
scr_init_run();
}
else
{
//播放过开机动画之后,跳转至主界面
switch (m5data.scr_now)
{
case SCREEN_MAIN:
{
if(m5data.key_main_enable)
{
scr_main_run(); //主界面显示
key_functions_main(); //主界面的按键功能
}
else
{
//KEY_MENU按下后进入此处等待screen_switch_waitms直接切换存在卡死风险
key = KEY_MENU;
key_functions_main(); //主界面的按键功能
}
}
break;
case SCREEN_SETTING:
{
if (m5data.key_setting_enable)
{
scr_setting_run(); //设置界面
key_functions_setting(); //设置界面的按键功能
}
else
{
//KEY_BACK按下后进入此处等待screen_switch_waitms直接切换存在卡死风险
key = KEY_BACK;
key_functions_setting(); //主界面的按键功能
}
}
break;
default:
@ -490,7 +472,6 @@ float32 temp2tcmv(SIG_FUNCTIONS_TYPE type, float32 temp)
}
//数据转换mux_signal.pv -> real_value
//float32 m2r_test_in = 0, m2r_test_out = 0;
float32 mux2real(float32 mux_pv)
{
float32 result = 0;
@ -602,7 +583,6 @@ float32 mux2real(float32 mux_pv)
case SIG_TC:
{
result = tcmv2temp(type, mux_pv);
//m2r_test_out = tcmv2temp(type, m2r_test_in);
}
break;
@ -862,7 +842,117 @@ void my_inits_gather(void)
events_init(&guider_ui); // 初始化事件
}
//按键数据类型转换
void key_char2struct(void)
{
key_pv.value = key;
switch (key_pv.value)
{
case KEY_OUT_VAL:
{
key_pv.tag = KEY_OUT;
}
break;
case KEY_UP_VAL:
{
key_pv.tag = KEY_UP;
}
break;
case KEY_MENU_VAL:
{
key_pv.tag = KEY_MENU;;
}
break;
case KEY_IN_VAL:
{
key_pv.tag = KEY_IN;;
}
break;
case KEY_LEFT_VAL:
{
key_pv.tag = KEY_LEFT;;
}
break;
case KEY_OK_VAL:
{
key_pv.tag = KEY_OK;
}
break;
case KEY_RIGHT_VAL:
{
key_pv.tag = KEY_RIGHT;
}
break;
case KEY_SWITCH_VAL:
{
key_pv.tag = KEY_SWITCH;
}
break;
case KEY_SOURCE_VAL:
{
key_pv.tag = KEY_SOURCE;
}
break;
case KEY_DOWN_VAL:
{
key_pv.tag = KEY_DOWN;
}
break;
case KEY_BACK_VAL:
{
key_pv.tag = KEY_BACK;
}
break;
case KEY_NONE_VAL:
{
key_pv.tag = KEY_NONE;
}
break;
case KEY_ALL_VAL:
{
key_pv.tag = KEY_ALL;
}
break;
default:
break;
}
}
//按键状态配置
void key_config(KEYS_TAG key_t, KEYS_STATUS sts)
{
if(key_t != KEY_ALL)
{
m5data.key_sts[key_t] = sts;
}
else
{
for (uint8_t i = 0; i < 11; i++)
{
m5data.key_status[i] = sts;
}
}
}
//按键使能查询
KEYS_STATUS key_valid(KEYS_TAG key_t)
{
return m5data.key_sts[key_t];
}

View File

@ -35,6 +35,9 @@ void tm1650_read_key(I2C_HandleTypeDef *hi2c, BOOL *kp_flag, uint16_t cmd, uint8
{
*kp_flag = FALSE;
HAL_I2C_Master_Receive(hi2c, cmd, key, 1, 0xff);
//数据转换
key_char2struct();
}
#endif

View File

@ -207,6 +207,7 @@ void start_task_hart(void const * argument)
for (;;)
{
//hart_communicate(&scom1_hart);
tm1650_read_key(&hi2c1, &kp_flag, COMMAND_READ_KEY_DATA, &key);
osDelay(10);

File diff suppressed because it is too large Load Diff