本帖最后由 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
点击该板卡,选择项目保存位置后点击下一步。
把PNG格式的图片放置在上一步生成的项目->Appli->TouchGFX->assets->images路径下。
点击小组件栏的图片,然后在右侧细节区域选择该图片即可。
使用STM32CubeIDE打开工程,在main里面初始化各种外设与os kernal:- MX_GPIO_Init();
- MX_HPDMA1_Init();
- MX_LTDC_Init();
- MX_CRC_Init();
- MX_DMA2D_Init();
- MX_JPEG_Init();
- MX_FLASH_Init();
- MX_I2C1_Init();
- MX_GPU2D_Init();
- MX_ICACHE_GPU2D_Init();
- MX_TouchGFX_Init();
- /* Call PreOsInit function */
- MX_TouchGFX_PreOSInit();
- /* USER CODE BEGIN 2 */
- /* USER CODE END 2 */
- /* Init scheduler */
- osKernelInitialize();
还初始化LTDC硬件模块:
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] LTDC Initialization Function
- * @param None
- * @retval None
- */
- static void MX_LTDC_Init(void)
- {
- /* USER CODE BEGIN LTDC_Init 0 */
- /* USER CODE END LTDC_Init 0 */
- LTDC_LayerCfgTypeDef pLayerCfg = {0};
- /* USER CODE BEGIN LTDC_Init 1 */
- /* USER CODE END LTDC_Init 1 */
- hltdc.Instance = LTDC;
- hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
- hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
- hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
- hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
- hltdc.Init.HorizontalSync = 4;
- hltdc.Init.VerticalSync = 4;
- hltdc.Init.AccumulatedHBP = 12;
- hltdc.Init.AccumulatedVBP = 12;
- hltdc.Init.AccumulatedActiveW = 812;
- hltdc.Init.AccumulatedActiveH = 492;
- hltdc.Init.TotalWidth = 820;
- hltdc.Init.TotalHeigh = 506;
- hltdc.Init.Backcolor.Blue = 0;
- hltdc.Init.Backcolor.Green = 0;
- hltdc.Init.Backcolor.Red = 0;
- if (HAL_LTDC_Init(&hltdc) != HAL_OK)
- {
- Error_Handler();
- }
- pLayerCfg.WindowX0 = 0;
- pLayerCfg.WindowX1 = 800;
- pLayerCfg.WindowY0 = 0;
- pLayerCfg.WindowY1 = 480;
- pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
- pLayerCfg.Alpha = 255;
- pLayerCfg.Alpha0 = 0;
- pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
- pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
- pLayerCfg.FBStartAdress = 0;
- pLayerCfg.ImageWidth = 800;
- pLayerCfg.ImageHeight = 480;
- pLayerCfg.Backcolor.Blue = 0;
- pLayerCfg.Backcolor.Green = 0;
- pLayerCfg.Backcolor.Red = 0;
- if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN LTDC_Init 2 */
- /* USER CODE END LTDC_Init 2 */
- }
点击生成代码。还可以进行在线验证,然后点击Flash and Run,进行烧录验证。
板卡正常显示该图片:
|