在 STM32H735G-DK 开发板运行时动态切换 LTDC 的像素格式模式,但没有成功。我使用的是 CubeMX 中该开发板对应的 BSP 示例。复位后,首次设置像素格式是可以成功的,但此后无论我怎么做都不再生效。我用 HAL_DeInit () 做完整反初始化,但依然不起作用。固件包版本为 STM32Cube_FW_H7_V1.12.1。
举例来说,同样的切换 LTDC 像素格式在 STM32U5G9J-DK2 上运行完全没有问题。
我的 main () 函数大致如下:
int main(void)
{
MPU_Config();
CPU_CACHE_Enable();
HAL_Init();
/* Configure the system clock to 520 MHz */
SystemClock_Config()
HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1);
BSP_LED_Init(LED1);
/*##-1- Initialize the LCD #################################################*/
/* Initialize the LCD */
//BSP_LCD_Init(0, LCD_ORIENTATION_LANDSCAPE);
BSP_LCD_InitEx(0, 1, LCD_PIXEL_FORMAT_RGB565, 480, 272);
UTIL_LCD_SetFuncDriver(&LCD_Driver);
uint32_t * pBuffAddr = (uint32_t*) 0x70000000; // clr buff addr
uint8_t * pFrameAddr = (uint8_t* ) 0x70000000; // read pic into
// clear 2 framebuffers size
for(uint32_t i = 0; i < (480*272*2);i++){
pBuffAddr[i] = 0;
}
BSP_LCD_SetBrightness(0, 100); // 0-100%
BSP_OSPI_NOR_Init_t Flash;
BSP_OSPI_NOR_DeInit(0);
Flash.InterfaceMode = BSP_OSPI_NOR_OPI_MODE;
Flash.TransferRate = BSP_OSPI_NOR_DTR_TRANSFER;
BSP_OSPI_NOR_Init(0, &Flash);
BSP_OSPI_NOR_Read(0, pFrameAddr, 0, 261120);
BSP_OSPI_NOR_DeInit(0);
HAL_Delay(1111);
// clear 2 framebuffers size
for(uint32_t i = 0; i < (480*272*2);i++){
pBuffAddr[i] = 0;
}
//-------------------------------------------------
//- below unsuccessful try to change pixel format -
//-------------------------------------------------
BSP_LCD_DeInit(0);
BSP_LCD_Init(0, LCD_ORIENTATION_LANDSCAPE);
BSP_LCD_SetBrightness(0, 100); // 0-100%
UTIL_LCD_SetFuncDriver(&LCD_Driver);
// clear 2 framebuffers size
for(uint32_t i = 0; i < (480*272*2);i++){
pBuffAddr[i] = 0;
}
//-------------------------------------------------
//-------------------------------------------------
//-------------------------------------------------
extern void main_app(void);
while(1) {
__NOP();
main_app();
}
}
|