From fed557e2e162d018ec4fe2deee65f9c620bc026f Mon Sep 17 00:00:00 2001 From: andy <1414772332@qq.com> Date: Sat, 5 Jul 2025 23:48:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=B8=80=E4=BA=9B=E8=BD=AF?= =?UTF-8?q?=E4=BB=B6bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.make.py添加输出源文件的命令 2.解决找不到usart设备导致文件管理无法退出卡死的问题 3.解决点击关于本机卡死的问题 4.解决工具界面中文工具显示乱码的问题 --- .vscode/c_cpp_properties.json | 29 ++++++++++- .vscode/settings.json | 3 +- Project/Src/MyApp/tools.c | 12 +++-- Project/Src/MyWin/mywin_cfg.h | 14 +++--- Project/Src/MyWinApp/mywin_user_home.c | 66 +++++++++++++------------- Project/Src/MyWinApp/mywin_user_set.c | 9 ++-- Project/Src/MyWinApp/mywin_user_tool.c | 5 +- Project/make.py | 12 +++++ 8 files changed, 96 insertions(+), 54 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 9c10e64..ffb954f 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -3,7 +3,32 @@ { "name": "stm32", "includePath": [ - "${workspaceFolder}/**" + "Project/Src/MJPEG", + "Project/Src/MJPEG/JPEG", + "Project/Src/STM32/CMSIS/Device/ST/STM32F4xx/Include", + "Project/Src/STM32/CMSIS/Include", + "Project/Src/STM32/DSP/Include", + "Project/Src/STM32/STM32F4xx_StdPeriph_Driver/inc", + "Project/Src/Drive/Include", + "Project/Src/FATS", + "Project/Src/FreeType", + "Project/Src/FreeType/include", + "Project/Src/JPEG", + "Project/Src/lib", + "Project/Src/lpng1637", + "Project/Src/lua-5.4.2", + "Project/Src/lua-5.4.2/src", + "Project/Src/MP3", + "Project/Src/MP3/helix", + "Project/Src/MY", + "Project/Src/MyApp", + "Project/Src/MyWin", + "Project/Src/MyWin/MyWinCore", + "Project/Src/MyWin/Window", + "Project/Src/MyWinApp", + "Project/Src/rt-thread", + "Project/Src/rt-thread/include", + "Project/Src/zlib" ], "defines": [ "USE_STDPERIPH_DRIVER", @@ -17,7 +42,7 @@ "compilerPath": "D:/Program Files/arm-gnu-toolchain/bin/arm-none-eabi-gcc", "cStandard": "c17", "cppStandard": "c++17", - "intelliSenseMode": "macos-gcc-arm" + "intelliSenseMode": "windows-gcc-arm" } ], "version": 4 diff --git a/.vscode/settings.json b/.vscode/settings.json index da1bc48..405d5c5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,7 +12,8 @@ "mywin_user_status_bar.h": "c", "elf.h": "c", "string.h": "c", - "aftypes.h": "c" + "aftypes.h": "c", + "base.h": "c" }, "cortex-debug.variableUseNaturalFormat": false, "files.autoGuessEncoding": true, diff --git a/Project/Src/MyApp/tools.c b/Project/Src/MyApp/tools.c index 0fd85bb..e3b4a15 100644 --- a/Project/Src/MyApp/tools.c +++ b/Project/Src/MyApp/tools.c @@ -21,9 +21,9 @@ /*------------------------ļغ-----------------------------*/ - + // 1,ʹnrfʹô -#define USE_NRF 0 +#define USE_NRF 0 static int tools_updata_thread_on(void); static int tools_updata_thread_off(void); @@ -62,7 +62,11 @@ static void cd_updata_thread(void *t) } #else FILE *f=fopen("usart","r"); - if(f==NULL) return; + if(f==NULL) { + myfree(data); + g_updata_down=1; + return; + } #endif while(1) { @@ -257,7 +261,7 @@ static void puts_char(stdout_file *p,int ch) static int put(int ch) { stdout_file *file=g_stdout_file; - + if(file) { if(ch>0x80) diff --git a/Project/Src/MyWin/mywin_cfg.h b/Project/Src/MyWin/mywin_cfg.h index 6ba159d..ea0de16 100644 --- a/Project/Src/MyWin/mywin_cfg.h +++ b/Project/Src/MyWin/mywin_cfg.h @@ -32,27 +32,27 @@ -#ifndef u8 +#ifndef u8 # define u8 uint8_t #endif -#ifndef u16 +#ifndef u16 # define u16 uint16_t #endif -#ifndef u32 +#ifndef u32 # define u32 uint32_t #endif -#ifndef s8 +#ifndef s8 # define s8 int8_t #endif -#ifndef s16 +#ifndef s16 # define s16 int16_t #endif -#ifndef s32 +#ifndef s32 # define s32 int32_t #endif - +#define sprintf rt_sprintf typedef struct diff --git a/Project/Src/MyWinApp/mywin_user_home.c b/Project/Src/MyWinApp/mywin_user_home.c index 6beb2e8..5f14b91 100644 --- a/Project/Src/MyWinApp/mywin_user_home.c +++ b/Project/Src/MyWinApp/mywin_user_home.c @@ -12,7 +12,7 @@ #include "math.h" #include "mywin_user_lock.h" - + #define WIN_HOME_TYPE "WIN_HomeStruct" @@ -34,9 +34,9 @@ WIN_HomeStruct *WIN_CreatHome (WIN_WindowStruct *base, //Ϣѭ if (msgLoop==0) { - msgLoop=(void (*)(struct _WIN_WindowStruct *win,WIN_MsgStruct *msg))HOME_DefaultMsgLoop; - } - + msgLoop=(void (*)(struct _WIN_WindowStruct *win,WIN_MsgStruct *msg))HOME_DefaultMsgLoop; + } + WIN_HomeStruct *ret=mymalloc (sizeof ( WIN_HomeStruct)); //øĹ캯 if (ret) @@ -57,16 +57,16 @@ WIN_HomeStruct *WIN_CreatHome (WIN_WindowStruct *base, ((WIN_WindowStruct *)ret)->color=0xd7c1ac; ret->color1=0x7d7064; ret->timerId= WIN_CreatTimer ((WIN_WindowStruct *)ret,100); - - + + WIN_TouchWinStruct *t=(WIN_TouchWinStruct *)ret; WIN_WindowStruct *w=(WIN_WindowStruct *)ret; // TOUCHWIN_AddChild(t,TOUCH_CON_DOWN_PAR(w->x_size,w->y_size,creat_menu)); // TOUCHWIN_AddChild(t,TOUCH_CON_LEFT_PAR(w->x_size,w->y_size,creat_tool)); } } - - + + return ret; } @@ -95,9 +95,9 @@ static WIN_TouchWinStruct *creat_menu(WIN_TouchWinStruct *base) WIN_SetBkColor (temp,((WIN_WindowStruct *)base)->bkcolor); WIN_SetColor (temp,((WIN_WindowStruct *)base)->color); WIN_TouchWinStruct *t=(WIN_TouchWinStruct *)temp; - - - + + + // WIN_TouchWinStruct *t=(WIN_TouchWinStruct *)CreatPicSet((WIN_WindowStruct *)base); return t; } @@ -110,9 +110,9 @@ static WIN_TouchWinStruct *creat_tool(WIN_TouchWinStruct *base) temp=(WIN_WindowStruct *)MENU_Tool ((WIN_WindowStruct *)base,&((WIN_WindowStruct *)base)->pic); WIN_SetBkColor (temp,((WIN_WindowStruct *)base)->bkcolor); WIN_SetColor (temp,((WIN_WindowStruct *)base)->color); - + WIN_TouchWinStruct *t=(WIN_TouchWinStruct *)temp; - + return t; } @@ -126,7 +126,7 @@ static WIN_TouchWinStruct *creat_tool(WIN_TouchWinStruct *base) ̰ϼӦü ̰¼ݹ ȷ - + */ int HOME_KeyBord (WIN_HomeStruct *home,WIN_KeyStruct *k) { @@ -203,15 +203,15 @@ int HOME_TouchMove(WIN_HomeStruct *home,WIN_MoveStruct *m) //Ĭϻƺ void HOME_DefaultPaint (WIN_HomeStruct *home) { - + int x=0; int y=0; int x_size=((WIN_WindowStruct *)home)->x_size; int y_size=((WIN_WindowStruct *)home)->y_size; - + WIN_PaintBackGround ((WIN_WindowStruct *)home); u32 font_type=WIN_SetFontSize(24); - + //ʾ WIN_SetLcdBkColor (((WIN_WindowStruct *)home)->bkcolor); WIN_SetLcdColor (((WIN_WindowStruct *)home)->color); @@ -221,7 +221,7 @@ void HOME_DefaultPaint (WIN_HomeStruct *home) int dat_y=190+20; mymemcpy (txt_dat,home->date,10); WIN_DrawTxtHCenterAt (home->date,x_size/2,dat_y); - + //ʾʱ char txt_min[10]={0}; int time_x=0; @@ -239,9 +239,9 @@ void HOME_DefaultPaint (WIN_HomeStruct *home) WIN_SetFontSize(35); time_y-=WIN_GetFontHight(); WIN_DrawTxtAt(home->time+5,time_x,time_y); - + WIN_SetFontSize(font_type); - + //ͼ // static int angle=0; // angle++;if(angle>=360) angle=0; @@ -249,7 +249,7 @@ void HOME_DefaultPaint (WIN_HomeStruct *home) // int p_y=cosf(angle*3.14159f/180.0f)*50; // WIN_DrawLine(350+50,136,350+50+p_x,136+p_y); // WIN_DrawLineAA(350+50,136+50,350+50+p_x,136+50+p_y,4); - + } @@ -278,7 +278,7 @@ static int savefile_to_sd (void *ptr) char *file_name=mymalloc (256); FRESULT ret=FR_OK; int file_name_len=strlen(t->name); - + //ֻ֧3ַβ׺ if(t->name[file_name_len-4]!='.') { @@ -286,10 +286,10 @@ static int savefile_to_sd (void *ptr) myfree(file_name); return 0; } - + //ļѡļ sprintf (file_name,"0:/%s/%s",&t->name[file_name_len-3],t->name); - + open: ret=f_open (file,file_name,FA_CREATE_NEW|FA_WRITE); if(ret==FR_NO_PATH) @@ -304,7 +304,7 @@ static int savefile_to_sd (void *ptr) UINT real=0; ret=f_write (file,t->data,t->dataLen,&real); if (ret!=FR_OK) - while (1); + while (1); else ret_int=1;//1ɹ } else ret_int=0; @@ -364,9 +364,9 @@ void HOME_AlarmRun (WIN_HomeStruct *home) mp3Data.data=data;mp3Data.dataSize=size; work=WIN_CreatThreadPro ((int (*)(void *))g_alarmRingWork,&mp3Data,&work_ret,17); } - + MSGBOX_TipsTime ((WIN_WindowStruct *)win,"ʱ䵽",txt_buff,"ȷ",5*60*1000); - + //ر if (data) { @@ -385,8 +385,8 @@ void HOME_AlarmRun (WIN_HomeStruct *home) WIN_ExWorkFunClear(work); } myfree(data); - } - + } + myfree(txt_buff); } @@ -398,7 +398,7 @@ void HOME_RecvFile (WIN_HomeStruct *home,SysFile_RecvedStruct *r) if (r->recved) { char *txt=mymalloc (256); - sprintf (txt,"ļ%s\nļС%d Byte",r->name,r->dataLen); + sprintf(txt,"ļ%s\nļС%ld Byte",r->name,r->dataLen); if (MSGBOX_Inquiry ((WIN_WindowStruct *)win,"Ƿ񱣴棿",txt,"","")==0) { int index=MSGBOX_Select ((WIN_WindowStruct *)win,"ļλ",(char **)g_fileSaveItem, @@ -438,7 +438,7 @@ void HOME_DefaultMsgLoop (WIN_HomeStruct *home,WIN_MsgStruct *msg) WIN_KeyStruct *k=0; WIN_MoveStruct *m; switch (msg->msg) - { + { case WIN_MSG_PAINT: HOME_DefaultPaint(home); break; @@ -463,7 +463,7 @@ void HOME_DefaultMsgLoop (WIN_HomeStruct *home,WIN_MsgStruct *msg) RTC_DateTypeDef rtc_date={0}; RTC_GetTime (RTC_Format_BIN,&rtc_time); RTC_GetDate (RTC_Format_BIN,&rtc_date); - + if (home->sec!=rtc_time.RTC_Seconds) { home->sec=rtc_time.RTC_Seconds; @@ -474,7 +474,7 @@ void HOME_DefaultMsgLoop (WIN_HomeStruct *home,WIN_MsgStruct *msg) sprintf (home-> date,"%04d-%02d-%02d %s",rtc_date.RTC_Year+2000,rtc_date.RTC_Month,rtc_date.RTC_Date,g_week[rtc_date.RTC_WeekDay-1]); sprintf (home->time,"%02d:%02d:%02d",rtc_time.RTC_Hours,rtc_time.RTC_Minutes,rtc_time.RTC_Seconds); WIN_SetInvalidWhenTop ((WIN_WindowStruct *)home); - + } //if (WIN_FindTopWin(WIN_GetBaseWindow())==(WIN_WindowStruct *)home) { diff --git a/Project/Src/MyWinApp/mywin_user_set.c b/Project/Src/MyWinApp/mywin_user_set.c index 19ffffc..4811c74 100644 --- a/Project/Src/MyWinApp/mywin_user_set.c +++ b/Project/Src/MyWinApp/mywin_user_set.c @@ -59,9 +59,12 @@ WIN_MenuStruct *MENU_Setting (WIN_WindowStruct *base,WIN_PicStruct *pic) //ȡλõı -#define APP_SOURCE (*(u32 *)(0x08020000+4*7)) -#define APP_APPNAME (*(char **)(0x08020000+4*8)) -#define APP_SIZE (*(u32 *)(0x08020000+4*9)) +// #define APP_SOURCE (*(u32 *)(0x08020000+4*7)) +// #define APP_APPNAME (*(char **)(0x08020000+4*8)) +// #define APP_SIZE (*(u32 *)(0x08020000+4*9)) +#define APP_SOURCE (*(u32 *)(0x08000000+4*7)) +#define APP_APPNAME (*(char **)(0x08000000+4*8)) +#define APP_SIZE (*(u32 *)(0x08000000+4*9)) diff --git a/Project/Src/MyWinApp/mywin_user_tool.c b/Project/Src/MyWinApp/mywin_user_tool.c index f35f0fc..bfc43be 100644 --- a/Project/Src/MyWinApp/mywin_user_tool.c +++ b/Project/Src/MyWinApp/mywin_user_tool.c @@ -31,22 +31,19 @@ void MENU_ToolScanFile(WIN_MenuStruct *menu) FRESULT ret = FR_OK; DIR dir = {0}; FILINFO *file_info = 0; - char *tmp = mymalloc(256); file_info = mymalloc(sizeof(FILINFO)); ret = f_findfirst(&dir, file_info, TOOL_APP_PATH, "*.axf"); while ((ret == FR_OK) && (file_info->fname[0] != 0)) { if (AM_DIR & file_info->fattrib) continue; - gbk2utf8_str(file_info->fname, tmp); if (MENU_GetAllItemNum(menu) < TOOL_APP_MAXNUM) - MENU_AddItem(menu, 0, tmp); + MENU_AddItem(menu, 0, file_info->fname); else break; ret = f_findnext(&dir, file_info); } myfree(file_info); - myfree(tmp); } static void MENU_ToolEnter(WIN_MenuStruct *menu) diff --git a/Project/make.py b/Project/make.py index 7227285..656fa4a 100644 --- a/Project/make.py +++ b/Project/make.py @@ -319,6 +319,18 @@ def main(): for item in SRC_DIR: SRC += find_type(item,'.c') + if len(sys.argv) > 1: + l=[] + if sys.argv[1] == 'show_inc': + l=INC + elif sys.argv[1] == 'show_src': + l=SRC + l.sort() + for item in l: + t=item.replace('\\','/') + print(f"\"Project/{t}\",") + return + if build_depend(SRC): if build_object(SRC): if build_target(SRC):