fix(boot): hold backlight off until first frame is drawn
SGM_CTRL was turned on at the very start of LCD_Init(), before the ST7789V register sequence and first frame ran, showing garbage/blank content briefly on every boot. GPIO_Init() now forces backlight off at power-on, LCD_Init() no longer touches it, and main() only turns it on right before entering the main loop (after HomeApp's first frame is drawn). Wakeup_Restore()'s existing on-then-reinit sequence is untouched since it sets the level itself before calling LCD_Init().
This commit is contained in:
@@ -257,7 +257,7 @@ void main(void)
|
||||
RGB_Send(0, 0, 0, 0, 0, 0); // 【首要修正】:上电第一时间强制发送 0 码关闭灯条,熄灭上电暂态引起的随机白光!
|
||||
RF_Init(); // 初始化射频芯片各引脚控制
|
||||
Delay_ms(500); // 软启动延时,等待供电电容稳定
|
||||
LCD_Init(); // 初始化 LHS114TC-IF03 (ST7789V) 屏幕控制寄存器序列并开启背光
|
||||
LCD_Init(); // 初始化 LHS114TC-IF03 (ST7789V) 屏幕控制寄存器序列 (背光保持关闭,避免闪烁)
|
||||
Uart1_Init(); // 初始化串口 1 波特率 115200 供调试日志
|
||||
Uart_SendString("Wristband System Initialized!\r\n");
|
||||
|
||||
@@ -281,6 +281,9 @@ void main(void)
|
||||
|
||||
Uart_SendString("[SYS] Event-driven framework ready\r\n");
|
||||
|
||||
// 所有初始化与首帧时钟界面绘制均已完成,此刻才点亮背光,避免开机过程中的中间画面被看到而产生闪烁
|
||||
SGM_CTRL = 0;
|
||||
|
||||
// ====== 主循环 ======
|
||||
while (1) {
|
||||
/* 0. 检查主循环按键定时标志 (由 1ms 中断置位,主循环响应清除并处理) */
|
||||
|
||||
@@ -60,6 +60,9 @@ void GPIO_Init(void)
|
||||
// SGM_CTRL (P1.7), LCD 控制管脚 (P1.0, P1.1, P1.4, P1.5, P1.6) 置为推挽输出
|
||||
P1M1 &= ~((1 << 7) | (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 6));
|
||||
P1M0 |= ((1 << 7) | (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 6));
|
||||
SGM_CTRL = 1; // 背光从上电第一刻起就确定关闭 (LEDA=1),避免推挽模式生效前电平不确定造成瞬间闪烁
|
||||
|
||||
|
||||
|
||||
// SHUT (P3.5) 射频/外设开启使能脚置为推挽输出
|
||||
P3M1 &= ~(1 << 5);
|
||||
|
||||
Reference in New Issue
Block a user