From d15fd02a37f2cd23827f26c80857b27339fac05c Mon Sep 17 00:00:00 2001 From: sc <2401809606@qq.com> Date: Wed, 4 Feb 2026 01:43:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E5=8F=B0=E4=BF=A1=E6=81=AF=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=EF=BC=8Cplclink=E5=86=85=E5=AD=98=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/PLC_link.c | 12 +- applications/lvgl/lv__user_gui.c | 303 +---------------------------- applications/lvgl/ui_data_labels.c | 249 ++++++++++++++++++++++++ applications/lvgl/ui_data_labels.h | 23 +++ applications/main.c | 4 + applications/wdt.c | 7 +- drivers/ltdc.c | 2 +- 7 files changed, 294 insertions(+), 306 deletions(-) create mode 100644 applications/lvgl/ui_data_labels.c create mode 100644 applications/lvgl/ui_data_labels.h diff --git a/applications/PLC_link.c b/applications/PLC_link.c index 22732b6..f585cc2 100644 --- a/applications/PLC_link.c +++ b/applications/PLC_link.c @@ -29,8 +29,10 @@ static const mb_backend_param_t mb_bkd_prm = { }; extern unsigned char sys_time[6]; -uint8_t r_buffer[16],w_buffer[16]; -uint16_t r_regsD[128],w_regsD[128]; +uint8_t * r_buffer = NULL; +uint8_t * w_buffer = NULL; +uint16_t * r_regsD = NULL; +uint16_t * w_regsD = NULL; static void mb_plc_read_regs(mb_inst_t *hinst) { @@ -102,8 +104,14 @@ static void mb_plc_read_regs(mb_inst_t *hinst) } } +extern struct rt_memheap sram_DTCMRAM,sdram_heap; static void mb_plc_thread(void *args)//线程服务函数 { + r_buffer = rt_memheap_alloc(&sram_DTCMRAM, sizeof(uint8_t)*16); + w_buffer = rt_memheap_alloc(&sram_DTCMRAM, sizeof(uint8_t)*16); + r_regsD = rt_memheap_alloc(&sram_DTCMRAM, sizeof(uint16_t)*128); + w_regsD = rt_memheap_alloc(&sram_DTCMRAM, sizeof(uint16_t)*128); + mb_inst_t *hinst = mb_create(MB_BACKEND_TYPE_RTU, &mb_bkd_prm); RT_ASSERT(hinst != NULL); diff --git a/applications/lvgl/lv__user_gui.c b/applications/lvgl/lv__user_gui.c index 6de4960..2c2cd9e 100644 --- a/applications/lvgl/lv__user_gui.c +++ b/applications/lvgl/lv__user_gui.c @@ -20,283 +20,12 @@ #include #include #include "lvgl.h" +#include #define DBG_TAG "gui" #define DBG_LVL DBG_LOG #include -#define LCD_BL_PIN GET_PIN(D,12) -#define LCD_RST_PIN GET_PIN(D,11) - -// 全局或静态数组 -lv_obj_t * di_led_array[64]; -lv_obj_t * di_name_array[64]; -lv_obj_t * do_led_array[64]; -lv_obj_t * do_name_array[64]; -void ui_init_dio_leds(lv_ui *ui) { - di_led_array[0] = ui->screen_di1; - di_led_array[1] = ui->screen_di2; - di_led_array[2] = ui->screen_di3; - di_led_array[3] = ui->screen_di4; - di_led_array[4] = ui->screen_di5; - di_led_array[5] = ui->screen_di6; - di_led_array[6] = ui->screen_di7; - di_led_array[7] = ui->screen_di8; - di_led_array[8] = ui->screen_di9; - di_led_array[9] = ui->screen_di10; - di_led_array[10] = ui->screen_di11; - di_led_array[11] = ui->screen_di12; - di_led_array[12] = ui->screen_di13; - di_led_array[13] = ui->screen_di14; - di_led_array[14] = ui->screen_di15; - di_led_array[15] = ui->screen_di16; - di_led_array[16] = ui->screen_di17; - di_led_array[17] = ui->screen_di18; - di_led_array[18] = ui->screen_di19; - di_led_array[19] = ui->screen_di20; - di_led_array[20] = ui->screen_di21; - di_led_array[21] = ui->screen_di22; - di_led_array[22] = ui->screen_di23; - di_led_array[23] = ui->screen_di24; - di_led_array[24] = ui->screen_di25; - di_led_array[25] = ui->screen_di26; - di_led_array[26] = ui->screen_di27; - di_led_array[27] = ui->screen_di28; - di_led_array[28] = ui->screen_di29; - di_led_array[29] = ui->screen_di30; - di_led_array[30] = ui->screen_di31; - di_led_array[31] = ui->screen_di32; - di_led_array[32] = ui->screen_di33; - di_led_array[33] = ui->screen_di34; - di_led_array[34] = ui->screen_di35; - di_led_array[35] = ui->screen_di36; - di_led_array[36] = ui->screen_di37; - di_led_array[37] = ui->screen_di38; - di_led_array[38] = ui->screen_di39; - di_led_array[39] = ui->screen_di40; - di_led_array[40] = ui->screen_di41; - di_led_array[41] = ui->screen_di42; - di_led_array[42] = ui->screen_di43; - di_led_array[43] = ui->screen_di44; - di_led_array[44] = ui->screen_di45; - di_led_array[45] = ui->screen_di46; - di_led_array[46] = ui->screen_di47; - di_led_array[47] = ui->screen_di48; - di_led_array[48] = ui->screen_di49; - di_led_array[49] = ui->screen_di50; - di_led_array[50] = ui->screen_di51; - di_led_array[51] = ui->screen_di52; - di_led_array[52] = ui->screen_di53; - di_led_array[53] = ui->screen_di54; - di_led_array[54] = ui->screen_di55; - di_led_array[55] = ui->screen_di56; - di_led_array[56] = ui->screen_di57; - di_led_array[57] = ui->screen_di58; - di_led_array[58] = ui->screen_di59; - di_led_array[59] = ui->screen_di60; - di_led_array[60] = ui->screen_di61; - di_led_array[61] = ui->screen_di62; - di_led_array[62] = ui->screen_di63; - di_led_array[63] = ui->screen_di64; - - /*di_name_array[0] = ui->screen_name_di0; - di_name_array[1] = ui->screen_name_di1; - di_name_array[2] = ui->screen_name_di2; - di_name_array[3] = ui->screen_name_di3; - di_name_array[4] = ui->screen_name_di4; - di_name_array[5] = ui->screen_name_di5; - di_name_array[6] = ui->screen_name_di6; - di_name_array[7] = ui->screen_name_di7; - di_name_array[8] = ui->screen_name_di8; - di_name_array[9] = ui->screen_name_di9; - di_name_array[10] = ui->screen_name_di10; - di_name_array[11] = ui->screen_name_di11; - di_name_array[12] = ui->screen_name_di12; - di_name_array[13] = ui->screen_name_di13; - di_name_array[14] = ui->screen_name_di14; - di_name_array[15] = ui->screen_name_di15; - di_name_array[16] = ui->screen_name_di16; - di_name_array[17] = ui->screen_name_di17; - di_name_array[18] = ui->screen_name_di18; - di_name_array[19] = ui->screen_name_di19; - di_name_array[20] = ui->screen_name_di20; - di_name_array[21] = ui->screen_name_di21; - di_name_array[22] = ui->screen_name_di22; - di_name_array[23] = ui->screen_name_di23; - di_name_array[24] = ui->screen_name_di24; - di_name_array[25] = ui->screen_name_di25; - di_name_array[26] = ui->screen_name_di26; - di_name_array[27] = ui->screen_name_di27; - di_name_array[28] = ui->screen_name_di28; - di_name_array[29] = ui->screen_name_di29; - di_name_array[30] = ui->screen_name_di30; - di_name_array[31] = ui->screen_name_di31; - di_name_array[32] = ui->screen_name_di32; - di_name_array[33] = ui->screen_name_di33; - di_name_array[34] = ui->screen_name_di34; - di_name_array[35] = ui->screen_name_di35; - di_name_array[36] = ui->screen_name_di36; - di_name_array[37] = ui->screen_name_di37; - di_name_array[38] = ui->screen_name_di38; - di_name_array[39] = ui->screen_name_di39; - di_name_array[40] = ui->screen_name_di40; - di_name_array[41] = ui->screen_name_di41; - di_name_array[42] = ui->screen_name_di42; - di_name_array[43] = ui->screen_name_di43; - di_name_array[44] = ui->screen_name_di44; - di_name_array[45] = ui->screen_name_di45; - di_name_array[46] = ui->screen_name_di46; - di_name_array[47] = ui->screen_name_di47; - di_name_array[48] = ui->screen_name_di48; - di_name_array[49] = ui->screen_name_di49; - di_name_array[50] = ui->screen_name_di50; - di_name_array[51] = ui->screen_name_di51; - di_name_array[52] = ui->screen_name_di52; - di_name_array[53] = ui->screen_name_di53; - di_name_array[54] = ui->screen_name_di54; - di_name_array[55] = ui->screen_name_di55; - di_name_array[56] = ui->screen_name_di56; - di_name_array[57] = ui->screen_name_di57; - di_name_array[58] = ui->screen_name_di58; - di_name_array[59] = ui->screen_name_di59; - di_name_array[60] = ui->screen_name_di60; - di_name_array[61] = ui->screen_name_di61; - di_name_array[62] = ui->screen_name_di62; - di_name_array[63] = ui->screen_name_di63;*/ - -// - do_led_array[0] = ui->screen_do0; - do_led_array[1] = ui->screen_do1; - do_led_array[2] = ui->screen_do2; - do_led_array[3] = ui->screen_do3; - do_led_array[4] = ui->screen_do4; - do_led_array[5] = ui->screen_do5; - do_led_array[6] = ui->screen_do6; - do_led_array[7] = ui->screen_do7; - do_led_array[8] = ui->screen_do8; - do_led_array[9] = ui->screen_do9; - do_led_array[10] = ui->screen_do10; - do_led_array[11] = ui->screen_do11; - do_led_array[12] = ui->screen_do12; - do_led_array[13] = ui->screen_do13; - do_led_array[14] = ui->screen_do14; - do_led_array[15] = ui->screen_do15; - do_led_array[16] = ui->screen_do16; - do_led_array[17] = ui->screen_do17; - do_led_array[18] = ui->screen_do18; - do_led_array[19] = ui->screen_do19; - do_led_array[20] = ui->screen_do20; - do_led_array[21] = ui->screen_do21; - do_led_array[22] = ui->screen_do22; - do_led_array[23] = ui->screen_do23; - do_led_array[24] = ui->screen_do24; - do_led_array[25] = ui->screen_do25; - do_led_array[26] = ui->screen_do26; - do_led_array[27] = ui->screen_do27; - do_led_array[28] = ui->screen_do28; - do_led_array[29] = ui->screen_do29; - do_led_array[30] = ui->screen_do30; - do_led_array[31] = ui->screen_do31; - do_led_array[32] = ui->screen_do32; - do_led_array[33] = ui->screen_do33; - do_led_array[34] = ui->screen_do34; - do_led_array[35] = ui->screen_do35; - do_led_array[36] = ui->screen_do36; - do_led_array[37] = ui->screen_do37; - do_led_array[38] = ui->screen_do38; - do_led_array[39] = ui->screen_do39; - do_led_array[40] = ui->screen_do40; - do_led_array[41] = ui->screen_do41; - do_led_array[42] = ui->screen_do42; - do_led_array[43] = ui->screen_do43; - do_led_array[44] = ui->screen_do44; - do_led_array[45] = ui->screen_do45; - do_led_array[46] = ui->screen_do46; - do_led_array[47] = ui->screen_do47; - do_led_array[48] = ui->screen_do48; - do_led_array[49] = ui->screen_do49; - do_led_array[50] = ui->screen_do50; - do_led_array[51] = ui->screen_do51; - do_led_array[52] = ui->screen_do52; - do_led_array[53] = ui->screen_do53; - do_led_array[54] = ui->screen_do54; - do_led_array[55] = ui->screen_do55; - do_led_array[56] = ui->screen_do56; - do_led_array[57] = ui->screen_do57; - do_led_array[58] = ui->screen_do58; - do_led_array[59] = ui->screen_do59; - do_led_array[60] = ui->screen_do60; - do_led_array[61] = ui->screen_do61; - do_led_array[62] = ui->screen_do62; - do_led_array[63] = ui->screen_do63; - - /*do_name_array[0] = ui->screen_name_do0; - do_name_array[1] = ui->screen_name_do1; - do_name_array[2] = ui->screen_name_do2; - do_name_array[3] = ui->screen_name_do3; - do_name_array[4] = ui->screen_name_do4; - do_name_array[5] = ui->screen_name_do5; - do_name_array[6] = ui->screen_name_do6; - do_name_array[7] = ui->screen_name_do7; - do_name_array[8] = ui->screen_name_do8; - do_name_array[9] = ui->screen_name_do9; - do_name_array[10] = ui->screen_name_do10; - do_name_array[11] = ui->screen_name_do11; - do_name_array[12] = ui->screen_name_do12; - do_name_array[13] = ui->screen_name_do13; - do_name_array[14] = ui->screen_name_do14; - do_name_array[15] = ui->screen_name_do15; - do_name_array[16] = ui->screen_name_do16; - do_name_array[17] = ui->screen_name_do17; - do_name_array[18] = ui->screen_name_do18; - do_name_array[19] = ui->screen_name_do19; - do_name_array[20] = ui->screen_name_do20; - do_name_array[21] = ui->screen_name_do21; - do_name_array[22] = ui->screen_name_do22; - do_name_array[23] = ui->screen_name_do23; - do_name_array[24] = ui->screen_name_do24; - do_name_array[25] = ui->screen_name_do25; - do_name_array[26] = ui->screen_name_do26; - do_name_array[27] = ui->screen_name_do27; - do_name_array[28] = ui->screen_name_do28; - do_name_array[29] = ui->screen_name_do29; - do_name_array[30] = ui->screen_name_do30; - do_name_array[31] = ui->screen_name_do31; - do_name_array[32] = ui->screen_name_do32; - do_name_array[33] = ui->screen_name_do33; - do_name_array[34] = ui->screen_name_do34; - do_name_array[35] = ui->screen_name_do35; - do_name_array[36] = ui->screen_name_do36; - do_name_array[37] = ui->screen_name_do37; - do_name_array[38] = ui->screen_name_do38; - do_name_array[39] = ui->screen_name_do39; - do_name_array[40] = ui->screen_name_do40; - do_name_array[41] = ui->screen_name_do41; - do_name_array[42] = ui->screen_name_do42; - do_name_array[43] = ui->screen_name_do43; - do_name_array[44] = ui->screen_name_do44; - do_name_array[45] = ui->screen_name_do45; - do_name_array[46] = ui->screen_name_do46; - do_name_array[47] = ui->screen_name_do47; - do_name_array[48] = ui->screen_name_do48; - do_name_array[49] = ui->screen_name_do49; - do_name_array[50] = ui->screen_name_do50; - do_name_array[51] = ui->screen_name_do51; - do_name_array[52] = ui->screen_name_do52; - do_name_array[53] = ui->screen_name_do53; - do_name_array[54] = ui->screen_name_do54; - do_name_array[55] = ui->screen_name_do55; - do_name_array[56] = ui->screen_name_do56; - do_name_array[57] = ui->screen_name_do57; - do_name_array[58] = ui->screen_name_do58; - do_name_array[59] = ui->screen_name_do59; - do_name_array[60] = ui->screen_name_do60; - do_name_array[61] = ui->screen_name_do61; - do_name_array[62] = ui->screen_name_do62; - do_name_array[63] = ui->screen_name_do63;*/ -} - - void setup_user_screen(lv_ui *ui) { lv_obj_clear_flag(lv_tabview_get_content(ui->screen_tabview), LV_OBJ_FLAG_SCROLLABLE);//禁止左右滑动 @@ -333,32 +62,11 @@ void setup_s_screen(lv_ui *ui) snprintf(temp_str, sizeof(temp_str), "%05.1f", MTT); lv_label_set_text(ui->screen_temp, (const char *)temp_str); - //DIO_led - for (int i = 0; i < DI_TABLE_SIZE; i++) - { - if(di_table[i].current_state) - { - lv_led_on(di_led_array[i]); - } - else - { - lv_led_off(di_led_array[i]); - } - - } - for (int i = 0; i < DO_TABLE_SIZE; i++) - { - if(do_table[i].current_state) - { - lv_led_on(do_led_array[i]); - } - else - { - lv_led_off(do_led_array[i]); - } - } + update_led_i(); + update_led_o(); + update_io_labels(); } static void time_update_timer_cb(lv_timer_t * timer) @@ -372,8 +80,7 @@ void lv_user_gui_init(void) events_init(&guider_ui); custom_init(&guider_ui); setup_user_screen(&guider_ui); - ui_init_dio_leds(&guider_ui); - + ui_init_io(&guider_ui); // 创建一个每 500ms 触发一次的定时器 lv_timer_create(time_update_timer_cb, 900, NULL); } diff --git a/applications/lvgl/ui_data_labels.c b/applications/lvgl/ui_data_labels.c new file mode 100644 index 0000000..77174d0 --- /dev/null +++ b/applications/lvgl/ui_data_labels.c @@ -0,0 +1,249 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-02-04 Administrator the first version + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lvgl.h" + +// 全局或静态数组 +char buf[8]; + +lv_obj_t *di_led_array[64]; +lv_obj_t *do_led_array[64]; +lv_obj_t *di_labels[24]; // DI: AIO4001 ~ AIO4024 (24个) +lv_obj_t *do_labels[16]; // DO: AIO5001 ~ AIO5016 (16个) + +extern struct rt_memheap sram_SRAM1,sdram_heap; +void ui_init_io(lv_ui *ui) { + //di + di_led_array[0] = ui->screen_di1; + di_led_array[1] = ui->screen_di2; + di_led_array[2] = ui->screen_di3; + di_led_array[3] = ui->screen_di4; + di_led_array[4] = ui->screen_di5; + di_led_array[5] = ui->screen_di6; + di_led_array[6] = ui->screen_di7; + di_led_array[7] = ui->screen_di8; + di_led_array[8] = ui->screen_di9; + di_led_array[9] = ui->screen_di10; + di_led_array[10] = ui->screen_di11; + di_led_array[11] = ui->screen_di12; + di_led_array[12] = ui->screen_di13; + di_led_array[13] = ui->screen_di14; + di_led_array[14] = ui->screen_di15; + di_led_array[15] = ui->screen_di16; + di_led_array[16] = ui->screen_di17; + di_led_array[17] = ui->screen_di18; + di_led_array[18] = ui->screen_di19; + di_led_array[19] = ui->screen_di20; + di_led_array[20] = ui->screen_di21; + di_led_array[21] = ui->screen_di22; + di_led_array[22] = ui->screen_di23; + di_led_array[23] = ui->screen_di24; + di_led_array[24] = ui->screen_di25; + di_led_array[25] = ui->screen_di26; + di_led_array[26] = ui->screen_di27; + di_led_array[27] = ui->screen_di28; + di_led_array[28] = ui->screen_di29; + di_led_array[29] = ui->screen_di30; + di_led_array[30] = ui->screen_di31; + di_led_array[31] = ui->screen_di32; + di_led_array[32] = ui->screen_di33; + di_led_array[33] = ui->screen_di34; + di_led_array[34] = ui->screen_di35; + di_led_array[35] = ui->screen_di36; + di_led_array[36] = ui->screen_di37; + di_led_array[37] = ui->screen_di38; + di_led_array[38] = ui->screen_di39; + di_led_array[39] = ui->screen_di40; + di_led_array[40] = ui->screen_di41; + di_led_array[41] = ui->screen_di42; + di_led_array[42] = ui->screen_di43; + di_led_array[43] = ui->screen_di44; + di_led_array[44] = ui->screen_di45; + di_led_array[45] = ui->screen_di46; + di_led_array[46] = ui->screen_di47; + di_led_array[47] = ui->screen_di48; + di_led_array[48] = ui->screen_di49; + di_led_array[49] = ui->screen_di50; + di_led_array[50] = ui->screen_di51; + di_led_array[51] = ui->screen_di52; + di_led_array[52] = ui->screen_di53; + di_led_array[53] = ui->screen_di54; + di_led_array[54] = ui->screen_di55; + di_led_array[55] = ui->screen_di56; + di_led_array[56] = ui->screen_di57; + di_led_array[57] = ui->screen_di58; + di_led_array[58] = ui->screen_di59; + di_led_array[59] = ui->screen_di60; + di_led_array[60] = ui->screen_di61; + di_led_array[61] = ui->screen_di62; + di_led_array[62] = ui->screen_di63; + di_led_array[63] = ui->screen_di64; +//do + do_led_array[0] = ui->screen_do0; + do_led_array[1] = ui->screen_do1; + do_led_array[2] = ui->screen_do2; + do_led_array[3] = ui->screen_do3; + do_led_array[4] = ui->screen_do4; + do_led_array[5] = ui->screen_do5; + do_led_array[6] = ui->screen_do6; + do_led_array[7] = ui->screen_do7; + do_led_array[8] = ui->screen_do8; + do_led_array[9] = ui->screen_do9; + do_led_array[10] = ui->screen_do10; + do_led_array[11] = ui->screen_do11; + do_led_array[12] = ui->screen_do12; + do_led_array[13] = ui->screen_do13; + do_led_array[14] = ui->screen_do14; + do_led_array[15] = ui->screen_do15; + do_led_array[16] = ui->screen_do16; + do_led_array[17] = ui->screen_do17; + do_led_array[18] = ui->screen_do18; + do_led_array[19] = ui->screen_do19; + do_led_array[20] = ui->screen_do20; + do_led_array[21] = ui->screen_do21; + do_led_array[22] = ui->screen_do22; + do_led_array[23] = ui->screen_do23; + do_led_array[24] = ui->screen_do24; + do_led_array[25] = ui->screen_do25; + do_led_array[26] = ui->screen_do26; + do_led_array[27] = ui->screen_do27; + do_led_array[28] = ui->screen_do28; + do_led_array[29] = ui->screen_do29; + do_led_array[30] = ui->screen_do30; + do_led_array[31] = ui->screen_do31; + do_led_array[32] = ui->screen_do32; + do_led_array[33] = ui->screen_do33; + do_led_array[34] = ui->screen_do34; + do_led_array[35] = ui->screen_do35; + do_led_array[36] = ui->screen_do36; + do_led_array[37] = ui->screen_do37; + do_led_array[38] = ui->screen_do38; + do_led_array[39] = ui->screen_do39; + do_led_array[40] = ui->screen_do40; + do_led_array[41] = ui->screen_do41; + do_led_array[42] = ui->screen_do42; + do_led_array[43] = ui->screen_do43; + do_led_array[44] = ui->screen_do44; + do_led_array[45] = ui->screen_do45; + do_led_array[46] = ui->screen_do46; + do_led_array[47] = ui->screen_do47; + do_led_array[48] = ui->screen_do48; + do_led_array[49] = ui->screen_do49; + do_led_array[50] = ui->screen_do50; + do_led_array[51] = ui->screen_do51; + do_led_array[52] = ui->screen_do52; + do_led_array[53] = ui->screen_do53; + do_led_array[54] = ui->screen_do54; + do_led_array[55] = ui->screen_do55; + do_led_array[56] = ui->screen_do56; + do_led_array[57] = ui->screen_do57; + do_led_array[58] = ui->screen_do58; + do_led_array[59] = ui->screen_do59; + do_led_array[60] = ui->screen_do60; + do_led_array[61] = ui->screen_do61; + do_led_array[62] = ui->screen_do62; + do_led_array[63] = ui->screen_do63; +//ai + di_labels[0] = ui->screen_AIO4001; + di_labels[1] = ui->screen_AIO4002; + di_labels[2] = ui->screen_AIO4003; + di_labels[3] = ui->screen_AIO4004; + di_labels[4] = ui->screen_AIO4005; + di_labels[5] = ui->screen_AIO4006; + di_labels[6] = ui->screen_AIO4007; + di_labels[7] = ui->screen_AIO4008; + di_labels[8] = ui->screen_AIO4009; + di_labels[9] = ui->screen_AIO4010; + di_labels[10] = ui->screen_AIO4011; + di_labels[11] = ui->screen_AIO4012; + di_labels[12] = ui->screen_AIO4013; + di_labels[13] = ui->screen_AIO4014; + di_labels[14] = ui->screen_AIO4015; + di_labels[15] = ui->screen_AIO4016; + di_labels[16] = ui->screen_AIO4017; + di_labels[17] = ui->screen_AIO4018; + di_labels[18] = ui->screen_AIO4019; + di_labels[19] = ui->screen_AIO4020; + di_labels[20] = ui->screen_AIO4021; + di_labels[21] = ui->screen_AIO4022; + di_labels[22] = ui->screen_AIO4023; + di_labels[23] = ui->screen_AIO4024; +//ao + do_labels[0] = ui->screen_AIO5001; + do_labels[1] = ui->screen_AIO5002; + do_labels[2] = ui->screen_AIO5003; + do_labels[3] = ui->screen_AIO5004; + do_labels[4] = ui->screen_AIO5005; + do_labels[5] = ui->screen_AIO5006; + do_labels[6] = ui->screen_AIO5007; + do_labels[7] = ui->screen_AIO5008; + do_labels[8] = ui->screen_AIO5009; + do_labels[9] = ui->screen_AIO5010; + do_labels[10] = ui->screen_AIO5011; + do_labels[11] = ui->screen_AIO5012; + do_labels[12] = ui->screen_AIO5013; + do_labels[13] = ui->screen_AIO5014; + do_labels[14] = ui->screen_AIO5015; + do_labels[15] = ui->screen_AIO5016; +} + +void update_io_labels(void) +{ + + for (int i = 0; i < 24; i++) { + snprintf(buf, sizeof(buf), "%d", ai_table[i].current_Value); + lv_label_set_text(di_labels[i], buf); + } + + for (int i = 0; i < 16; i++) { + snprintf(buf, sizeof(buf), "%d", ao_table[i].current_Value); + lv_label_set_text(do_labels[i], buf); + } +} +void update_led_i(void) +{ + for (int i = 0; i < 64; i++) + { + if(di_table[i].current_state) + { + lv_led_on(di_led_array[i]); + } + else + { + lv_led_off(di_led_array[i]); + } + + } +} +void update_led_o(void) +{ + for (int i = 0; i < 64; i++) + { + if(do_table[i].current_state) + { + lv_led_on(do_led_array[i]); + } + else + { + lv_led_off(do_led_array[i]); + } + } +} diff --git a/applications/lvgl/ui_data_labels.h b/applications/lvgl/ui_data_labels.h new file mode 100644 index 0000000..aa0c3eb --- /dev/null +++ b/applications/lvgl/ui_data_labels.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-02-04 Administrator the first version + */ +#ifndef APPLICATIONS_LVGL_UI_DATA_LABELS_H_ +#define APPLICATIONS_LVGL_UI_DATA_LABELS_H_ + +extern lv_obj_t *di_led_array[64]; +extern lv_obj_t *do_led_array[64]; +extern lv_obj_t *di_labels[24]; // DI: AIO4001 ~ AIO4024 (24个) +extern lv_obj_t *do_labels[16]; // DO: AIO5001 ~ AIO5016 (16个) + +void ui_init_io(lv_ui *ui); +void update_io_labels(void); +void update_led_i(void); +void update_led_o(void); + +#endif /* APPLICATIONS_LVGL_UI_DATA_LABELS_H_ */ diff --git a/applications/main.c b/applications/main.c index b398f6f..22120ba 100644 --- a/applications/main.c +++ b/applications/main.c @@ -12,12 +12,14 @@ #include #include "DB_SQLite.h" #include "Variable.h" +#include "ltdc.h" #define DBG_TAG "main" #define DBG_LVL DBG_LOG #include extern rt_sem_t mount_sem; // 引用上面SD挂载线程定义的信号量 +extern int wdt_sample(); int main(void) { @@ -26,5 +28,7 @@ int main(void) thread_RUN_LED();//运行指示灯线程 rt_snprintf(sys_var, sizeof(sys_var),"0.0.01a"); + wdt_sample();//启动看门狗 + LTDC_BL(1);//屏幕背光开 return RT_EOK; } diff --git a/applications/wdt.c b/applications/wdt.c index 45c3963..2d39faa 100644 --- a/applications/wdt.c +++ b/applications/wdt.c @@ -33,11 +33,8 @@ static void idle_hook(void) rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL); } -static int wdt_sample() +int wdt_sample() { - - rt_thread_mdelay(5000); - rt_err_t ret = RT_EOK; rt_uint32_t timeout = 1; /* 溢出时间,单位:秒 */ char device_name[RT_NAME_MAX]; @@ -72,4 +69,4 @@ static int wdt_sample() return ret; } -INIT_APP_EXPORT(wdt_sample); +//INIT_APP_EXPORT(wdt_sample); diff --git a/drivers/ltdc.c b/drivers/ltdc.c index 697a806..5b81fa4 100644 --- a/drivers/ltdc.c +++ b/drivers/ltdc.c @@ -588,7 +588,7 @@ int ltdc_init(void) LTDC_RST(1); rt_thread_mdelay(200); - LTDC_BL(1); + //LTDC_BL(1); ltdc_clear(0XFFFFFFFF); return 0;