[STM32H7] 【STM32H7S78-DK测评】-基础任务之LTDC屏幕显示

[复制链接]
3556|2
 楼主| HuaWng 发表于 2024-10-12 12:38 | 显示全部楼层 |阅读模式
本帖最后由 HuaWng 于 2024-10-11 22:37 编辑

TouchGFX是一款针对STM32微控制器进行了优化的免费高级图形软件框架。借助STM32图形功能和架构,TouchGFX可通过创建类似于智能手机的图形用户界面,来加快HMI-of-things技术革新。

TouchGFX框架包含易于使用的拖放式图形构建PC工具TouchGFX Designer (TouchGFXDesigner)以及强大的优化图形处理内核TouchGFX引擎。结合WYSIWYG仿真器和自动代码生成功能,TouchGFX大大简化了GUI开发。通过对完成的原型进行快速迭代,它涵盖了从早期设计草图到生成独家最终产品的所有步骤。

TouchGFX Designer可作为独立的软件工具提供,便于快速轻松地进行图形评估和概念验证。TouchGFX框架(包括TouchGFX Designer)包含在STM32Cube MCU软件包中。它完全兼容STM32CubeMX初始化和代码生成工具,便于在统一项目环境中无缝地联合开发图形和主应用程序。



借此机会来体验一下TouchGFX与STM32CubeIDE的协作来显示图片。打开TouchGFX软件后,输入开发板型号进行检索:H7S78-DK


1.png

点击该板卡,选择项目保存位置后点击下一步。


把PNG格式的图片放置在上一步生成的项目->Appli->TouchGFX->assets->images路径下。
2.png

点击小组件栏的图片,然后在右侧细节区域选择该图片即可。
3.png

使用STM32CubeIDE打开工程,在main里面初始化各种外设与os kernal:
  1.   MX_GPIO_Init();
  2.   MX_HPDMA1_Init();
  3.   MX_LTDC_Init();
  4.   MX_CRC_Init();
  5.   MX_DMA2D_Init();
  6.   MX_JPEG_Init();
  7.   MX_FLASH_Init();
  8.   MX_I2C1_Init();
  9.   MX_GPU2D_Init();
  10.   MX_ICACHE_GPU2D_Init();
  11.   MX_TouchGFX_Init();
  12.   /* Call PreOsInit function */
  13.   MX_TouchGFX_PreOSInit();
  14.   /* USER CODE BEGIN 2 */

  15.   /* USER CODE END 2 */

  16.   /* Init scheduler */
  17.   osKernelInitialize();

还初始化LTDC硬件模块:
  1. /**
  2.   * [url=home.php?mod=space&uid=247401]@brief[/url] LTDC Initialization Function
  3.   * @param None
  4.   * @retval None
  5.   */
  6. static void MX_LTDC_Init(void)
  7. {

  8.   /* USER CODE BEGIN LTDC_Init 0 */

  9.   /* USER CODE END LTDC_Init 0 */

  10.   LTDC_LayerCfgTypeDef pLayerCfg = {0};

  11.   /* USER CODE BEGIN LTDC_Init 1 */

  12.   /* USER CODE END LTDC_Init 1 */
  13.   hltdc.Instance = LTDC;
  14.   hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
  15.   hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
  16.   hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
  17.   hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
  18.   hltdc.Init.HorizontalSync = 4;
  19.   hltdc.Init.VerticalSync = 4;
  20.   hltdc.Init.AccumulatedHBP = 12;
  21.   hltdc.Init.AccumulatedVBP = 12;
  22.   hltdc.Init.AccumulatedActiveW = 812;
  23.   hltdc.Init.AccumulatedActiveH = 492;
  24.   hltdc.Init.TotalWidth = 820;
  25.   hltdc.Init.TotalHeigh = 506;
  26.   hltdc.Init.Backcolor.Blue = 0;
  27.   hltdc.Init.Backcolor.Green = 0;
  28.   hltdc.Init.Backcolor.Red = 0;
  29.   if (HAL_LTDC_Init(&hltdc) != HAL_OK)
  30.   {
  31.     Error_Handler();
  32.   }
  33.   pLayerCfg.WindowX0 = 0;
  34.   pLayerCfg.WindowX1 = 800;
  35.   pLayerCfg.WindowY0 = 0;
  36.   pLayerCfg.WindowY1 = 480;
  37.   pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
  38.   pLayerCfg.Alpha = 255;
  39.   pLayerCfg.Alpha0 = 0;
  40.   pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
  41.   pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
  42.   pLayerCfg.FBStartAdress = 0;
  43.   pLayerCfg.ImageWidth = 800;
  44.   pLayerCfg.ImageHeight = 480;
  45.   pLayerCfg.Backcolor.Blue = 0;
  46.   pLayerCfg.Backcolor.Green = 0;
  47.   pLayerCfg.Backcolor.Red = 0;
  48.   if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
  49.   {
  50.     Error_Handler();
  51.   }
  52.   /* USER CODE BEGIN LTDC_Init 2 */

  53.   /* USER CODE END LTDC_Init 2 */

  54. }

点击生成代码。还可以进行在线验证,然后点击Flash and Run,进行烧录验证。
4.png

板卡正常显示该图片:

_cgi-bin_mmwebwx-bin_webwxgetmsgimg__&MsgID=923940113957670369&skey=@crypt_962c8.jpg




micoccd 发表于 2024-10-12 16:49 | 显示全部楼层
显示效果很好
 楼主| HuaWng 发表于 2024-10-12 17:21 | 显示全部楼层

是的,非常细腻!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部