From 9b3d457da6e1af1b8c9d208163ccf7a338d4ab94 Mon Sep 17 00:00:00 2001 From: yuquanjun Date: Wed, 2 Sep 2026 12:16:05 +0800 Subject: [PATCH] Fix boot black screen and mode-select touch Y-axis mapping. Send POWER_ON before slow peripheral init, enable backlight at LCD init, init W25Q128 early, and avoid App_Auto preset load deadlock. Disable LCD dump by default and enlarge UI thread stack for stable drawing. Co-authored-by: Cursor --- Global/Global.c | 8 +++++--- MyCode/App_Auto.c | 10 +++++++--- device/LCD_ILI9341/Drv_ILI9341_Lcd_Dump.h | 2 +- device/LCD_ILI9341/Drv_ILI9341_Lcd_Init.c | 6 ++---- device/LCD_ILI9341/Drv_XPT2046_Touch.c | 8 ++++---- project/src/main.c | 2 ++ task/task_init.c | 2 +- 7 files changed, 22 insertions(+), 16 deletions(-) diff --git a/Global/Global.c b/Global/Global.c index 7576797..77c3d8e 100644 --- a/Global/Global.c +++ b/Global/Global.c @@ -171,14 +171,16 @@ void System_PowerOn(void) BSP_BlueToothPowerEnable(1); powon = true; /* 更新开机标志 */ + /* 先通知 UI 亮屏,避免外设初始化阻塞导致长时间黑屏 */ + LOG_I("PWR", "send POWER_ON"); + MainTask_Sendmsg(MSG_ID_POWER_ON, 0, 0, 0); + AD85020B_Init(); TM1629D_Key_LED_Init(); app_tm1617_init(); XPT2046_Init(); App_Auto_Init(); - LOG_I("PWR", "periph ready send POWER_ON"); - /* 通知 UI 层画开机界面 */ - MainTask_Sendmsg(MSG_ID_POWER_ON,0,0,0); + LOG_I("PWR", "periph ready"); } static void PowerOn(void) diff --git a/MyCode/App_Auto.c b/MyCode/App_Auto.c index 3a16175..619e76a 100644 --- a/MyCode/App_Auto.c +++ b/MyCode/App_Auto.c @@ -95,11 +95,15 @@ void App_Auto_Init(void) m_presetCount = AutoBandTop1_GetPresetItemCount(); int ret = AutoBandTop1_LoadPresetItemFromFlash(0); - if(ret != 0) + if (ret != 0) { - for(;;); + LOG_E("AUTO", "LoadPreset fail ret=%d addr=0x%08X", + ret, (unsigned)ADDRESS); + } + else + { + AutoBandTop1_ChangeBPM(mGuiData[1].Current); } - AutoBandTop1_ChangeBPM(mGuiData[1].Current); } //void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) diff --git a/device/LCD_ILI9341/Drv_ILI9341_Lcd_Dump.h b/device/LCD_ILI9341/Drv_ILI9341_Lcd_Dump.h index 133b4b7..74cd759 100644 --- a/device/LCD_ILI9341/Drv_ILI9341_Lcd_Dump.h +++ b/device/LCD_ILI9341/Drv_ILI9341_Lcd_Dump.h @@ -4,7 +4,7 @@ #include "includes.h" #ifndef DEBUG_LCD_DUMP -#define DEBUG_LCD_DUMP 1 +#define DEBUG_LCD_DUMP 0 #endif #if DEBUG_LCD_DUMP diff --git a/device/LCD_ILI9341/Drv_ILI9341_Lcd_Init.c b/device/LCD_ILI9341/Drv_ILI9341_Lcd_Init.c index f417cce..98a43d3 100644 --- a/device/LCD_ILI9341/Drv_ILI9341_Lcd_Init.c +++ b/device/LCD_ILI9341/Drv_ILI9341_Lcd_Init.c @@ -203,9 +203,7 @@ void LCD_Init(void) LCD_WR_DATA8(0x0F); // LCD_WR_REG(0x29); //Display on - LCD_FillByColor(0, 0, 240, 320, BLACK); // 初始全屏白色 + LCD_FillByColor(0, 0, 240, 320, BLACK); LCD_WR_REG(0x29); //Display on -// LCD_BLK_Set(); - - + LCD_BLK_Set(); } diff --git a/device/LCD_ILI9341/Drv_XPT2046_Touch.c b/device/LCD_ILI9341/Drv_XPT2046_Touch.c index 635bdcd..25c99b7 100644 --- a/device/LCD_ILI9341/Drv_XPT2046_Touch.c +++ b/device/LCD_ILI9341/Drv_XPT2046_Touch.c @@ -192,13 +192,13 @@ static uint8_t TP_AdcCoordValid(uint16_t x, uint16_t y) #define CALIB_Y_MAX 3950 /* - * 实测(IRQ 有效按下):raw.x 常贴高,上下主要改 raw.y → 不要 SWAP。 - * Y 镜像:上方「万能」对应更大 raw.y。 - * 空闲 ADC 噪声是 raw.y=4095,禁止走 ADC 回退,否则幽灵点击。 + * 竖屏线性映射(与 BOOT/量产一致):raw.x→屏幕X,raw.y→屏幕Y,不做镜像。 + * 若 TP_MIRROR_Y=1 会导致 Y 轴反转(点「专业」误中「万能」)。 + * DOUT(PA15) 浮空输入;空闲 raw.y 噪声禁止走 ADC 回退。 */ #define TP_SWAP_XY 0 #define TP_MIRROR_X 0 -#define TP_MIRROR_Y 1 +#define TP_MIRROR_Y 0 static uint16_t TP_MapAxis(uint16_t adc, uint16_t adc_min, uint16_t adc_max, uint16_t px_max) { diff --git a/project/src/main.c b/project/src/main.c index f65184f..63b8b2e 100644 --- a/project/src/main.c +++ b/project/src/main.c @@ -81,6 +81,7 @@ int main(void) /* add user code begin 2 */ bsp_init(); + BSP_MainPowerEnable(1); LCD_Init(); LCD_Dump_Init(); app_log_init(); @@ -140,6 +141,7 @@ void bsp_init(void) /* init spi1 function. */ wk_spi1_init(); + W25Q128_Init(); /* init adc1 function. */ wk_adc1_init(); diff --git a/task/task_init.c b/task/task_init.c index 61a396c..925dee1 100644 --- a/task/task_init.c +++ b/task/task_init.c @@ -9,7 +9,7 @@ static struct rt_thread TaskBTRecvThread; static struct rt_thread TaskAutobandThread; ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskScanThread_Stack[512]; -ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskUIThread_Stack[1024]; +ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskUIThread_Stack[2048]; ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskTouchThread_Stack[1536]; ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskMainThread_Stack[512]; ALIGN(RT_ALIGN_SIZE) static rt_uint8_t TaskBTTHandlehread_Stack[512];