From ac7e06bbd20f8807916f8f1db361805664251cb8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BF=B1=20=E6=B2=88?= <2401809606@qq.com>
Date: Sun, 15 Feb 2026 20:45:53 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=BF=AE=E6=94=B9,=E9=80=9A?=
=?UTF-8?q?=E8=AE=AF,=E6=98=BE=E7=A4=BA=E7=9B=B8=E5=85=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.settings/language.settings.xml | 2 +-
applications/PLC_link.c | 16 +++++++++++++++-
applications/SCCM_link.c | 4 +++-
applications/data/SC828_DATA_table.c | 12 +++++++-----
applications/data/SC828_DATA_table.h | 3 +++
applications/data/Variable.c | 24 ++++++++++++------------
applications/data/Variable.h | 22 +++++++++++-----------
applications/lvgl/lv__user_gui.c | 18 ++++++++++++++++--
applications/lvgl/lv_port_disp.c | 12 ++++++------
applications/lvgl/ui_data_labels.c | 2 +-
applications/sdram/sdram_port.c | 3 ++-
applications/sql/DB_SQLite.c | 2 +-
drivers/board.c | 4 ++--
drivers/board.h | 10 ++++++++--
drivers/ltdc.c | 2 +-
15 files changed, 89 insertions(+), 47 deletions(-)
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index fba71f2..87b2450 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/applications/PLC_link.c b/applications/PLC_link.c
index f585cc2..6b8e990 100644
--- a/applications/PLC_link.c
+++ b/applications/PLC_link.c
@@ -38,6 +38,7 @@ static void mb_plc_read_regs(mb_inst_t *hinst)
{
if (mb_connect(hinst) < 0)//连接失败, 延时返回
{
+ PLCLINK_OK = 0;
LOG_E("modbus connect fail.");
return;
}
@@ -47,12 +48,15 @@ static void mb_plc_read_regs(mb_inst_t *hinst)
//读取 Modbus bits
int mrx = mb_read_bits(hinst, 2000, DI_TABLE_SIZE, r_buffer);
if (mrx > 0)
- { //解包到数据表
+ {
+ PLCLINK_OK = 1;
+ //解包到数据表
for (int i = 0; i < DI_TABLE_SIZE; i++) {
di_table[i].current_state = (r_buffer[i / 8] >> (i % 8)) & 1;
}
}else
{
+ PLCLINK_OK = 0;
rt_thread_mdelay(500);
}
@@ -73,8 +77,12 @@ static void mb_plc_read_regs(mb_inst_t *hinst)
int mwy = mb_write_bits(hinst, 2256, DO_TABLE_SIZE, w_buffer);
if (mwy ==0)
{
+ PLCLINK_OK = 0;
rt_thread_mdelay(500);
}
+ else{
+ PLCLINK_OK = 1;
+ }
//输入寄存器d0->6000
//u16 r_regsD[AI_TABLE_SIZE];
@@ -82,11 +90,13 @@ static void mb_plc_read_regs(mb_inst_t *hinst)
int mrd = mb_read_regs(hinst, 6000, AI_TABLE_SIZE, r_regsD);
if (mrd > 0)
{
+ PLCLINK_OK = 1;
for (int i = 0; i < AI_TABLE_SIZE; i++)
{
ai_table[i].current_Value = r_regsD[i];
}
}else {
+ PLCLINK_OK = 0;
rt_thread_mdelay(500);
}
@@ -100,8 +110,12 @@ static void mb_plc_read_regs(mb_inst_t *hinst)
int mwd = mb_write_regs(hinst, 6100, AO_TABLE_SIZE, w_regsD);
if (mwd == 0)
{
+ PLCLINK_OK = 0;
rt_thread_mdelay(500);
}
+ else{
+ PLCLINK_OK = 1;
+ }
}
extern struct rt_memheap sram_DTCMRAM,sdram_heap;
diff --git a/applications/SCCM_link.c b/applications/SCCM_link.c
index 8d6cb10..7da1ee0 100644
--- a/applications/SCCM_link.c
+++ b/applications/SCCM_link.c
@@ -13,6 +13,7 @@
#include
#include "data_comm.h"
#include
+#include "SC828_DATA_table.h"
#define DBG_TAG "SCCM_link"
#define DBG_LVL DBG_LOG
@@ -58,6 +59,7 @@ void uart_thread_entry(void *parameter)
if (len > 0)
{
+ SCLINK_OK=1;
// 动态分配请求结构体(见之前完整代码)
struct proc_request *req = rt_malloc(sizeof(struct proc_request));
if (!req) continue;
@@ -68,7 +70,7 @@ void uart_thread_entry(void *parameter)
if (rt_mq_send(request_mq, &req, sizeof(req)) == RT_EOK)
{
// 等待处理完成
- if (rt_mq_recv(response_mq, &req, sizeof(req), 500) >= RT_EOK)
+ if (rt_mq_recv(response_mq, &req, sizeof(req), 1000) >= RT_EOK)
{
if(req->output_len>0) rs485_send(hinst, req->output, req->output_len);
}
diff --git a/applications/data/SC828_DATA_table.c b/applications/data/SC828_DATA_table.c
index 0571e4f..a02c843 100644
--- a/applications/data/SC828_DATA_table.c
+++ b/applications/data/SC828_DATA_table.c
@@ -210,6 +210,8 @@ const unsigned char DO_TABLE_SIZE = sizeof(do_table) / sizeof(do_table[0]);
const unsigned char AI_TABLE_SIZE = sizeof(ai_table) / sizeof(ai_table[0]);
const unsigned char AO_TABLE_SIZE = sizeof(ao_table) / sizeof(ao_table[0]);
const unsigned char DATA_TABLE_SIZE = sizeof(data_table) / sizeof(data_table[0]);
+int8_t PLCLINK_OK = 0;
+int8_t SCLINK_OK = 0;
//步骤数据表最大
//IO_STEP_DATA step_table[256] ;
@@ -399,11 +401,11 @@ void table_thread_entry(void *parameter)
rt_thread_delay(500);
//Ai输入
- MTT = get_ai_value(4001)/10.0f;
- MUT = get_ai_value(4002)/10.0f;
- STTA = get_ai_value(4003)/10.0f;
- STTB = get_ai_value(4004)/10.0f;
- STTC = get_ai_value(4005)/10.0f;
+ MTT = get_ai_value(4001);///浮点
+ MUT = get_ai_value(4002);///浮点
+ STTA = get_ai_value(4003);///浮点
+ STTB = get_ai_value(4004);///浮点
+ STTC = get_ai_value(4005);///浮点
MTL = get_ai_value(4007);
STLA = get_ai_value(4008);
STLB = get_ai_value(4009);
diff --git a/applications/data/SC828_DATA_table.h b/applications/data/SC828_DATA_table.h
index 9cb5dd0..5fd1cfd 100644
--- a/applications/data/SC828_DATA_table.h
+++ b/applications/data/SC828_DATA_table.h
@@ -70,6 +70,9 @@ extern IO_State_DATA data_table[];
//extern IO_STEP_DATA step_table[256];
extern IO_STEP_DATA *step_table;
+extern int8_t PLCLINK_OK;//plc连接状态
+extern int8_t SCLINK_OK;//中控连接
+
extern const unsigned char DI_TABLE_SIZE;
extern const unsigned char DO_TABLE_SIZE;
extern const unsigned char AI_TABLE_SIZE;
diff --git a/applications/data/Variable.c b/applications/data/Variable.c
index 5c92550..62bbcba 100644
--- a/applications/data/Variable.c
+++ b/applications/data/Variable.c
@@ -41,18 +41,18 @@ unsigned int UserInfoStart = 900;
unsigned int RUN = 0;
unsigned int STEPID = 0;
-// 浮点变量
-float MTT = 0.0f;//主缸温度
-float MTL = 0.0f;//主缸水位
-float MTH = 6.0f;//主缸ph
-float MST = 0.0f;//目标温度
-float MUT = 0.0f;//主缸温度2
-float STTA = 0.0f;//料a温度
-float STLA = 0.0f;//料a水位
-float STTB = 0.0f;//料b温度
-float STLB = 0.0f;//料b水位
-float STTC = 0.0f;//料c温度
-float STLC = 0.0f;//料c水位
+// 需要小数点变量
+unsigned int MTT = 0;//主缸温度
+unsigned int MTL = 0;//主缸水位
+unsigned int MTH = 6;//主缸ph
+unsigned int MST = 0;//目标温度
+unsigned int MUT = 0;//主缸温度2
+unsigned int STTA = 0;//料a温度
+unsigned int STLA = 0;//料a水位
+unsigned int STTB = 0;//料b温度
+unsigned int STLB = 0;//料b水位
+unsigned int STTC = 0;//料c温度
+unsigned int STLC = 0;//料c水位
// 控制输出
unsigned int Pump = 0;//主泵
diff --git a/applications/data/Variable.h b/applications/data/Variable.h
index eb6e636..cf75683 100644
--- a/applications/data/Variable.h
+++ b/applications/data/Variable.h
@@ -64,17 +64,17 @@ extern unsigned int P9;
extern unsigned int P10;
// ===== 浮点数变量 =====
-extern float MTT;
-extern float MTL;
-extern float MTH;
-extern float MST;
-extern float MUT;
-extern float STTA;
-extern float STLA;
-extern float STTB;
-extern float STLB;
-extern float STTC;
-extern float STLC;
+extern unsigned int MTT;
+extern unsigned int MTL;
+extern unsigned int MTH;
+extern unsigned int MST;
+extern unsigned int MUT;
+extern unsigned int STTA;
+extern unsigned int STLA;
+extern unsigned int STTB;
+extern unsigned int STLB;
+extern unsigned int STTC;
+extern unsigned int STLC;
extern unsigned int P1;
extern unsigned int P2;
extern unsigned int P3;
diff --git a/applications/lvgl/lv__user_gui.c b/applications/lvgl/lv__user_gui.c
index 153e324..07509e1 100644
--- a/applications/lvgl/lv__user_gui.c
+++ b/applications/lvgl/lv__user_gui.c
@@ -21,6 +21,7 @@
#include
#include "lvgl.h"
#include
+#include "SC828_DATA_table.h"
#define DBG_TAG "gui"
#define DBG_LVL DBG_LOG
@@ -56,13 +57,26 @@ void setup_s_screen(lv_ui *ui)
//工单
lv_label_set_text(ui->screen_order, (const char *)Work);
//水位
- snprintf(wter_str, sizeof(wter_str), "%04.0f", MTL);
+ snprintf(wter_str, sizeof(wter_str), "%04.0f", MTL/10.0f);
lv_label_set_text(ui->screen_water, (const char *)wter_str);
//温度
- snprintf(temp_str, sizeof(temp_str), "%05.1f", MTT);
+ snprintf(temp_str, sizeof(temp_str), "%05.1f", MTT/10.0f);
lv_label_set_text(ui->screen_temp, (const char *)temp_str);
+ if(SCLINK_OK)//中央连接状态显示
+ {
+ lv_obj_clear_flag(ui->screen_inf_link, LV_OBJ_FLAG_HIDDEN);
+ SCLINK_OK =0;
+ }else{
+ lv_obj_add_flag(ui->screen_inf_link, LV_OBJ_FLAG_HIDDEN);
+ }
+ if(PLCLINK_OK)//plc连接状态显示
+ {
+
+ }else{
+
+ }
update_led_i();
update_led_o();
diff --git a/applications/lvgl/lv_port_disp.c b/applications/lvgl/lv_port_disp.c
index 356386e..39c3508 100644
--- a/applications/lvgl/lv_port_disp.c
+++ b/applications/lvgl/lv_port_disp.c
@@ -61,7 +61,7 @@ static lv_color_t *buf_3_2 = RT_NULL;
/**********************
* GLOBAL FUNCTIONS
**********************/
-extern struct rt_memheap sdram_heap; //
+extern struct rt_memheap sdram_lcd; //
void lv_port_disp_init(void)
{
/*-------------------------
@@ -128,21 +128,21 @@ void lv_port_disp_init(void)
// 使用对齐分配函数
- buf_1 = (lv_color_t *)rt_memheap_alloc_align(&sdram_heap,
+ buf_1 = (lv_color_t *)rt_memheap_alloc_align(&sdram_lcd,
sizeof(lv_color_t) * MY_DISP_HOR_RES * 10,
4); // ← 关键:对齐到 4 字节
- buf_2_1 = (lv_color_t *)rt_memheap_alloc_align(&sdram_heap,
+ buf_2_1 = (lv_color_t *)rt_memheap_alloc_align(&sdram_lcd,
sizeof(lv_color_t) * MY_DISP_HOR_RES * 10,
4);
- buf_2_2 = (lv_color_t *)rt_memheap_alloc_align(&sdram_heap,
+ buf_2_2 = (lv_color_t *)rt_memheap_alloc_align(&sdram_lcd,
sizeof(lv_color_t) * MY_DISP_HOR_RES * 10,
4);
- buf_3_1 = (lv_color_t *)rt_memheap_alloc_align(&sdram_heap,
+ buf_3_1 = (lv_color_t *)rt_memheap_alloc_align(&sdram_lcd,
sizeof(lv_color_t) * MY_DISP_HOR_RES * MY_DISP_VER_RES,
4);
- buf_3_2 = (lv_color_t *)rt_memheap_alloc_align(&sdram_heap,
+ buf_3_2 = (lv_color_t *)rt_memheap_alloc_align(&sdram_lcd,
sizeof(lv_color_t) * MY_DISP_HOR_RES * MY_DISP_VER_RES,
4);
diff --git a/applications/lvgl/ui_data_labels.c b/applications/lvgl/ui_data_labels.c
index 498a0e0..4aaa4cc 100644
--- a/applications/lvgl/ui_data_labels.c
+++ b/applications/lvgl/ui_data_labels.c
@@ -21,7 +21,7 @@
#include
#include "lvgl.h"
#include
-#include "libcsv.h"
+//#include "libcsv.h"
// 全局或静态数组
char buf[8];
diff --git a/applications/sdram/sdram_port.c b/applications/sdram/sdram_port.c
index d0fa9f2..86d8a78 100644
--- a/applications/sdram/sdram_port.c
+++ b/applications/sdram/sdram_port.c
@@ -16,7 +16,7 @@
static SDRAM_HandleTypeDef hsdram1;
static FMC_SDRAM_CommandTypeDef command;
#ifdef RT_USING_MEMHEAP_AS_HEAP
-struct rt_memheap sdram_heap;
+struct rt_memheap sdram_heap,sdram_lcd;
#endif
/**
* @brief Perform the SDRAM exernal memory inialization sequence
@@ -161,6 +161,7 @@ static int SDRAM_Init(void)
#ifdef RT_USING_MEMHEAP_AS_HEAP
/* If RT_USING_MEMHEAP_AS_HEAP is enabled, SDRAM is initialized to the heap */
rt_memheap_init(&sdram_heap, "SDRAM", (void *)SDRAM1_START, SDRAM1_SIZE);
+ rt_memheap_init(&sdram_lcd, "LCDRAM", (void *)SDRAM_LCD_START, SDRAM_LCD_SIZE);
#endif
}
return result;
diff --git a/applications/sql/DB_SQLite.c b/applications/sql/DB_SQLite.c
index ac19fa4..4d1ec9c 100644
--- a/applications/sql/DB_SQLite.c
+++ b/applications/sql/DB_SQLite.c
@@ -14,7 +14,7 @@
#include "DB_SQLite.h"
#include "sqlite3.h"
#include
-#include "libcsv.h"
+//#include "libcsv.h"
#define DB_NAME "/sddisk/SC828.db"
int db_HelperInit;
diff --git a/drivers/board.c b/drivers/board.c
index b32b56c..5be58c6 100644
--- a/drivers/board.c
+++ b/drivers/board.c
@@ -30,8 +30,8 @@ rt_weak void rt_hw_board_init()
rt_memheap_init(&sram_DTCMRAM, "DTCMRAM", (void *)DTCMRAM_START, DTCMRAM_SIZE);
//rt_memheap_init(&sram_AXIRAM, "AXIRAM", (void *)AXIRAM_START, AXIRAM_SIZE);
- rt_memheap_init(&sram_SRAM1, "SRAM1", (void *)SRAM1_START, SRAM1_SIZE);
- rt_memheap_init(&sram_SRAM2, "SRAM2", (void *)SRAM2_START, SRAM2_SIZE);
+ //rt_memheap_init(&sram_SRAM1, "SRAM1", (void *)SRAM1_START, SRAM1_SIZE);
+ //rt_memheap_init(&sram_SRAM2, "SRAM2", (void *)SRAM2_START, SRAM2_SIZE);
hw_board_init(BSP_CLOCK_SOURCE, BSP_CLOCK_SOURCE_FREQ_MHZ, BSP_CLOCK_SYSTEM_FREQ_MHZ);
diff --git a/drivers/board.h b/drivers/board.h
index 0406255..ce9dce5 100644
--- a/drivers/board.h
+++ b/drivers/board.h
@@ -58,8 +58,14 @@ extern "C"
//#define SRAM3_END (SRAM3_START + SRAM3_SIZE)
#define BSP_USING_SDRAM
-#define SDRAM1_START (0xC0000000)
-#define SDRAM1_SIZE (32*1024*1024)
+//Mib显存
+#define LCD_SIZE (5)
+#define SDRAM_LCD_START (0xC0000000)
+#define SDRAM_LCD_SIZE (LCD_SIZE*1024*1024)
+#define SDRAM_LCD_END (SDRAM_LCD_START + SDRAM_LCD_SIZE)
+
+#define SDRAM1_START (SDRAM_LCD_END)//(0xC0400000)
+#define SDRAM1_SIZE ((32-LCD_SIZE)*1024*1024)
#define SDRAM1_END (SDRAM1_START + SDRAM1_SIZE)
/*-------------------------- ROM/RAM CONFIG END --------------------------*/
diff --git a/drivers/ltdc.c b/drivers/ltdc.c
index 5b81fa4..24f8719 100644
--- a/drivers/ltdc.c
+++ b/drivers/ltdc.c
@@ -458,7 +458,7 @@ int ltdc_init(void)
lcdltdc.pwidth = 1024; lcdltdc.pheight = 600;
lcdltdc.hsw = 20; lcdltdc.hbp = 160; lcdltdc.hfp = 160;
lcdltdc.vsw = 3; lcdltdc.vbp = 23; lcdltdc.vfp = 12;
- ltdc_clk_set(128, 32, 7);
+ ltdc_clk_set(128, 32, 9);
}
else if (lcdid == 0X7018)
{