You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F469I-DISCO开发板LCD无法点亮技术求助

STM32F469I-DISCO LCD黑屏无背光问题排查与解决

问题场景

  • 基于STM32CubeIDE开发STM32F469I-DISCO图形应用
  • LED可正常切换状态,但LCD始终黑屏且无背光
  • 代码中已调用BSP_LCD系列初始化函数,并手动控制LCD_BL_CTRL引脚

核心问题分析与修复方案

1. 背光引脚输出模式错误

代码中LCD_BL_CTRL引脚配置为GPIO_MODE_OUTPUT_OD(开漏输出),但STM32F469I-DISCO的LCD背光驱动电路需要推挽输出才能提供足够驱动能力,开漏输出若无外部上拉,无法有效触发背光开启。

修改代码:

GPIO_InitStruct.Pin = LCD_BL_CTRL_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 替换为推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LCD_BL_CTRL_GPIO_Port, &GPIO_InitStruct);

2. 初始化顺序不合理

先初始化MX_USB_HOST_Init()再处理GPIO和LCD初始化,可能导致资源或时钟冲突。建议优先完成LCD相关初始化,再处理其他外设。

3. LCD图层未激活

调用BSP_LCD_LayerDefaultInit()后,需手动激活图层,否则帧缓冲内容无法输出到LCD:

BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_BACKGROUND);

同时,BSP_LCD_InitEx()可替换为更简洁的BSP_LCD_SetOrientation(),避免重复初始化:

BSP_LCD_Init();
BSP_LCD_SetOrientation(LCD_ORIENTATION_LANDSCAPE);

4. 帧缓冲与SDRAM配置

确认STM32CubeMX中已正确配置外部SDRAM,且LCD_FB_START_ADDRESS指向正确的SDRAM地址(STM32F469默认SDRAM起始地址为0xD0000000)。若SDRAM未配置,帧缓冲无法正常工作,LCD会黑屏。

5. 延时函数问题

自定义的delayMs()可能在RTOS环境下导致线程阻塞,建议替换为RTOS原生的osDelay()函数。

修改后的完整StartDefaultTask示例

void StartDefaultTask(void const * argument)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    // 优先初始化LCD背光GPIO
    __HAL_RCC_GPIOA_CLK_ENABLE();
    GPIO_InitStruct.Pin = LCD_BL_CTRL_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(LCD_BL_CTRL_GPIO_Port, &GPIO_InitStruct);

    // LCD初始化流程
    BSP_LCD_Init();
    BSP_LCD_SetOrientation(LCD_ORIENTATION_LANDSCAPE);
    BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER_BACKGROUND, LCD_FB_START_ADDRESS);
    BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_BACKGROUND);
    BSP_LCD_Clear(LCD_COLOR_WHITE); // 改为白色,更易观察是否点亮

    // 初始化其他外设
    MX_USB_HOST_Init();

    // 其他GPIO初始化
    __HAL_RCC_GPIOK_CLK_ENABLE();
    // ... 你的GPIOK配置代码
    __HAL_RCC_GPIOD_CLK_ENABLE();
    // ... 你的GPIOD配置代码

    for(;;)
    {
        HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_Port, LCD_BL_CTRL_Pin, GPIO_PIN_RESET);

        osDelay(1000);

        HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET);
        HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_Port, LCD_BL_CTRL_Pin, GPIO_PIN_SET);

        osDelay(1000);

        osDelay(1);
    }
}

额外排查点

  • 检查STM32CubeMX中是否开启LTDC外设时钟,以及LCD相关引脚(RGB数据、时钟、同步信号等)的配置是否正确。
  • 确认开发板LCD排线插紧,电源供电正常。

内容的提问来源于stack exchange,提问作者andrea ciuffoli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 18:55:09