更新:

1、界面切换方式选择隐藏&显示;
2、界面切换bug修复;
3、进度条开机动画优化;
This commit is contained in:
吴俊潮 2025-04-22 17:20:24 +08:00
parent b2324f2d19
commit e7aeb8269b
12 changed files with 16575 additions and 16549 deletions

View File

@ -286,7 +286,8 @@ float32 ohm2temp(float32 ohm);
//数据转换,温度 ℃ 转化为热电阻阻值 Ω
float32 temp2ohm(float32 temp);
//初始化打包
void my_inits_gather(void);

View File

@ -227,8 +227,12 @@ void key_functions_main(void)
set_working_mode(SIG_CURRENT, CURRENT_MA);
//加载菜单界面
lv_obj_clear_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
lv_scr_load(guider_ui.screen_setting);
scr_setting_recover();
lv_obj_clear_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
//隐藏主界面对象
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
//按键标志置0等待一段时间后再切换至设置菜单的按键功能
m5data.key_main_enable = 0;
@ -247,9 +251,6 @@ void key_functions_main(void)
if( (m5data.tick_cur - m5data.tick_prv) >= screen_switch_wait) //tick间隔达到目标后执行功能
{
//隐藏主界面对象
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
//等待结束,切换成设置菜单的按键功能
m5data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单
m5data.key_setting_enable = 1;
@ -573,7 +574,7 @@ void scr_init_run(void)
{
case 0:
{
if( init_set_bar(0, 30, 1500) )
if( init_set_bar(0, 35, 1200) )
{
init_step = 1;
}
@ -582,7 +583,7 @@ void scr_init_run(void)
case 1:
{
if( init_set_bar(60, 100, 1500) )
if( init_set_bar(70, 100, 1200) )
{
init_step = 2;
}
@ -593,13 +594,15 @@ void scr_init_run(void)
{
//加载主界面和设置界面的内容
setup_scr_screen_main(&guider_ui);
delay_cnt(200);
setup_scr_screen_setting(&guider_ui);
delay_cnt(200);
lv_scr_load(guider_ui.screen_main);
//额外处理,也用于界面切换
scr_main_recover();
scr_setting_recover();
delay_cnt(500);
lv_obj_add_flag(guider_ui.screen_init, LV_OBJ_FLAG_HIDDEN);
init_step = 3;
}
@ -609,12 +612,6 @@ void scr_init_run(void)
{
if( m5data.tick_prv == -1 )
{
lv_scr_load(guider_ui.screen_main);
//删除初始界面对象,释放剩余内存
//lv_obj_del(guider_ui.screen_init);
lv_obj_add_flag(guider_ui.screen_init, LV_OBJ_FLAG_HIDDEN);
m5data.tick_prv = xTaskGetTickCount(); //记录起始时刻
}else
{
@ -664,6 +661,8 @@ uint8_t init_set_bar(uint8_t start, uint8_t end, uint16_t interval)
{
if( m5data.tick_prv == -1 )
{
lv_obj_set_style_anim_time(guider_ui.screen_init_bar_1, 1000, LV_STATE_DEFAULT);
//如果当前值就是起点,那么直接设置终点,并转至下一步
if( lv_bar_get_value(guider_ui.screen_init_bar_1) == start )
{
@ -1414,6 +1413,10 @@ void scr_main_recover(void)
//输入/输出曲线、图例、上下限颜色更新
scr_main_color_update();
setting_items_check(99, tabdata.item_cursor);
tabdata.item_cursor_prv = 99;
tabdata.item_cursor = 0;
}
//颜色更新

View File

@ -16,7 +16,7 @@ int32_t color_table[7] =
void tab_data_init(void)
{
tabdata.item_cursor = 0; //选项卡的游标(焦点)
tabdata.item_cursor_prv = 0; //前一刻的选项卡游标
tabdata.item_cursor_prv = 99; //前一刻的选项卡游标
tabdata.item_page = 1; //当前页
tabdata.item_page_prv = 1; //前一页
tabdata.content_cursor = 99; //某一选项卡内部的游标
@ -132,12 +132,13 @@ void key_functions_setting(void)
{
if( m5data.tick_prv == -1 )
{
//下次进入设置页面时从选项卡0开始
tabdata.item_cursor = 0;
//加载主界面
lv_obj_clear_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
lv_scr_load(guider_ui.screen_main);
scr_main_recover();
lv_obj_clear_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
//隐藏设置界面对象
lv_obj_add_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
//设置菜单按键使能置零,等待一段时间后切换至主界面的按键功能
m5data.key_setting_enable = 0;
@ -156,9 +157,6 @@ void key_functions_setting(void)
if( (m5data.tick_cur - m5data.tick_prv) >= screen_switch_wait) //tick间隔达到目标后执行功能
{
//隐藏设置界面对象
lv_obj_add_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
//等待结束,切换至主界面的按键功能
m5data.scr_now = SCREEN_MAIN;
m5data.key_main_enable = 1;
@ -1062,6 +1060,7 @@ void scr_setting_recover(void)
tabdata.item_page = 1;
//在这里恢复选项卡0第1页的显示内容
//ITEMS_0
setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv);
setting_laguage_switch(tabdata.item3_page0_language);
setting_items_page(ITEMS_0 ,tabdata.item_page);

View File

@ -845,6 +845,23 @@ float32 my_power(int a, int b)
return result;
}
//初始化打包
void my_inits_gather(void)
{
//eeprom
eeprom_spi_init();
//按键扫描
tm1650_init(&hi2c1);
//LVGL
lv_init(); // LVGL 初始化
lv_port_disp_init(); // 注册LVGL的显示任务初始化
// lv_demo_benchmark(); //lv_conf.h, line:761
setup_ui(&guider_ui); // 初始化UI设置与加载初始界面
events_init(&guider_ui); // 初始化事件
}

View File

@ -26,7 +26,7 @@ void duty_tim3(void)
}
void duty_tim6(void)
{
lv_tick_inc(1);
//lv_tick_inc(1);
heart_1000ms_cnt++;
if( heart_1000ms_cnt >= 1000)

View File

@ -64,7 +64,7 @@
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 7 )
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
#define configTOTAL_HEAP_SIZE ((size_t)20360)
#define configTOTAL_HEAP_SIZE ((size_t)32768)
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_STATS_FORMATTING_FUNCTIONS 1

View File

@ -159,7 +159,6 @@ void MX_FREERTOS_Init(void) {
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{
@ -167,8 +166,7 @@ void StartDefaultTask(void const * argument)
/* Infinite loop */
for (;;)
{
osDelay(500);
osDelay(500);
}
/* USER CODE END StartDefaultTask */
}

View File

@ -36,8 +36,6 @@
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
lv_ui guider_ui; // 声明 lvgl界面对象
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
@ -53,7 +51,7 @@ lv_ui guider_ui; // 声明 lvgl界面对象
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
lv_ui guider_ui; // 声明 lvgl界面对象
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
@ -113,17 +111,18 @@ int main(void)
MX_USART3_UART_Init();
MX_I2C3_Init();
/* USER CODE BEGIN 2 */
eeprom_spi_init();
tm1650_init(&hi2c1);
// eeprom_spi_init();
// tm1650_init(&hi2c1);
// lcd_initial(); // LCD初始化迁移至lv_port_disp_init()内部
lv_init(); // LVGL 初始化
lv_port_disp_init(); // 注册LVGL的显示任务初始化
// lv_init(); // LVGL 初始化
// lv_port_disp_init(); // 注册LVGL的显示任务初始化
my_inits_gather();
HAL_TIM_Base_Start_IT(&htim6);
// lv_demo_benchmark(); //lv_conf.h, line:761
setup_ui(&guider_ui); // 初始化UI设置与加载初始界面
events_init(&guider_ui); // 初始化事件
// setup_ui(&guider_ui); // 初始化UI设置与加载初始界面
// events_init(&guider_ui); // 初始化事件
/* USER CODE END 2 */

View File

@ -57,6 +57,9 @@
#if LV_MEM_ADR == 0
#undef LV_MEM_POOL_INCLUDE
#undef LV_MEM_POOL_ALLOC
#else
#define LV_MEM_POOL_INCLUDE "FreeRTOS.h"
#define LV_MEM_POOL_ALLOC pvPortMalloc
#endif
#else /*LV_MEM_CUSTOM*/
@ -85,10 +88,10 @@
/*Use a custom tick source that tells the elapsed time in milliseconds.
*It removes the need to manually update the tick with `lv_tick_inc()`)*/
#define LV_TICK_CUSTOM 0
#define LV_TICK_CUSTOM 1
#if LV_TICK_CUSTOM
#define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
#define LV_TICK_CUSTOM_INCLUDE "apps_gather.h" /*Header for the system time function*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR ( xTaskGetTickCount() ) /*Expression evaluating to current system time in ms*/
/*If using lvgl as ESP32 component*/
// #define LV_TICK_CUSTOM_INCLUDE "esp_timer.h"
// #define LV_TICK_CUSTOM_SYS_TIME_EXPR ((esp_timer_get_time() / 1000LL))

File diff suppressed because it is too large Load Diff

View File

@ -29,7 +29,7 @@
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x2000
Stack_Size EQU 0x4000
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
@ -40,7 +40,7 @@ __initial_sp
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x0000
Heap_Size EQU 0x200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base

View File

@ -27,7 +27,7 @@ FREERTOS.INCLUDE_uxTaskGetStackHighWaterMark=1
FREERTOS.IPParameters=Tasks01,FootprintOK,configUSE_TICKLESS_IDLE,configGENERATE_RUN_TIME_STATS,configTOTAL_HEAP_SIZE,configUSE_STATS_FORMATTING_FUNCTIONS,configUSE_TRACE_FACILITY,configUSE_IDLE_HOOK,INCLUDE_uxTaskGetStackHighWaterMark
FREERTOS.Tasks01=defaultTask,-3,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;task_lcd,1,768,start_task_lcd,Default,NULL,Dynamic,NULL,NULL;task_hart,2,256,start_task_hart,Default,NULL,Dynamic,NULL,NULL;task_ble,-1,256,start_task_ble,Default,NULL,Dynamic,NULL,NULL;task_rs485,2,256,start_rs485,Default,NULL,Dynamic,NULL,NULL;task_mux_analog,3,128,start_mux_analog,Default,NULL,Dynamic,NULL,NULL;task_menu,0,512,start_menu,Default,NULL,Dynamic,NULL,NULL;task_monitor,-3,128,start_task_monitor,Default,NULL,Dynamic,NULL,NULL
FREERTOS.configGENERATE_RUN_TIME_STATS=0
FREERTOS.configTOTAL_HEAP_SIZE=20360
FREERTOS.configTOTAL_HEAP_SIZE=32768
FREERTOS.configUSE_IDLE_HOOK=0
FREERTOS.configUSE_STATS_FORMATTING_FUNCTIONS=1
FREERTOS.configUSE_TICKLESS_IDLE=0
@ -502,7 +502,7 @@ ProjectManager.DeviceId=STM32F407VGTx
ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.28.1
ProjectManager.FreePins=false
ProjectManager.HalAssertFull=false
ProjectManager.HeapSize=0x0000
ProjectManager.HeapSize=0x200
ProjectManager.KeepUserCode=true
ProjectManager.LastFirmware=true
ProjectManager.LibraryCopy=1
@ -514,7 +514,7 @@ ProjectManager.ProjectFileName=signal_generator.ioc
ProjectManager.ProjectName=signal_generator
ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x2000
ProjectManager.StackSize=0x4000
ProjectManager.TargetToolchain=MDK-ARM V5.32
ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=