这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 【STM32H755】移植TouchGFX工程

共1条 1/1 1 跳转至

【STM32H755】移植TouchGFX工程

工程师
2025-08-23 13:16:54     打赏
前提

移植好LCD驱动程序,我使用cortex-m4驱动好了ST7789

安装好X-Cube-TOUCHGFX插件

移植步骤

1、开启x-cube-touchgfx

开启cube-TouchgFX开启cube-TouchgFX.png

2、配置TouchGFX为240*320像素

配置TouchGFX参数配置TouchGFX参数.png

保存,重新生成工程使用mdk打开工程

3、使用TouchGFX Designer打开工程

使用TouchGFX Designer打开工程使用TouchGFX Designer打开工程.png

4、使用TouchGFX设计简单的界面

TouchGFX设计简单的界面TouchGFX设计简单的界面.png

设计好后生成一下代码

5、生成工程后,需要修改TouchGFX的头文件引用到CM4,同时删除CM7的头文件引用。

../cm4/middlewares/st/touchgfx/framework/include

../cm4/touchgfx/generated/fonts/include

../cm4/touchgfx/generated/gui_generated/include

../cm4/touchgfx/generated/images/include

../cm4/touchgfx/generated/texts/include

../cm4/touchgfx/generated/videos/include

../cm4/touchgfx/gui/include

6、修改链接文件,编译链接时会报错如下:

ARM_V8链接出错ARM_V8链接出错.png

使用vscode打开mdk工程,找到

<FilePath>../cm4/middlewares/st/touchgfx/lib/core/cortex_m7/Keil/touchgfx_core.lib</FilePath>

这一行,修改为cortex-m4f

7、修改TouchGFXHAL.cpp

在头部添加引用

#ifdef __cplusplus
   extern "C"{
#include "lcd.h"
#include "stdio.h"
#include "spi.h"
#include "stdint.h"
}
#endif
extern SPI_HandleTypeDef hspi1;
#include <touchgfx/hal/OSWrappers.hpp>

8、修改flushFrameBuffer

void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)
{

   TouchGFXGeneratedHAL::flushFrameBuffer(rect);

volatile uint16_t* buffer = getClientFrameBuffer()+(rect.y*LCD_WIDTH)+rect.x;
   lcd_set_address(rect.x, rect.y, rect.x+rect.width-1, rect.y+rect.height-1);
   lcd_write_ram();
   hspi1.Init.DataSize = SPI_DATASIZE_16BIT;
   HAL_SPI_Init(&hspi1);
   LCD_CS(0);
   LCD_WR(1);
   for(uint32_t i=0; i<rect.height; i++)
   {
  lcd_write_16bit_datas((uint16_t*)buffer, rect.width);
  buffer += LCD_WIDTH;
   }
 LCD_CS(0);
   LCD_WR(1);
   hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
   HAL_SPI_Init(&hspi1);
}

9、在底部添加刷新函数:

extern "C"
void touchgfxSignalVSync(void)
{
   HAL::getInstance()->vSync();
   OSWrappers::signalVSync();
   HAL::getInstance()->swapFrameBuffers();
}

10、在定时器里添加心跳调用:

添加TouchGFX心路包调用添加TouchGFX心路包调用.png

11、在main中初始化TouchGFX,并在while里面周期调用刷新

 MX_TouchGFX_Init();
 /* USER CODE END 2 */

 /* Infinite loop */
 /* USER CODE BEGIN WHILE */
 while (1)
 {
 MX_TouchGFX_Process();
 BSP_LED_Toggle(LED1);
 HAL_Delay(5);
   /* USER CODE END WHILE */

 MX_TouchGFX_Process();
   /* USER CODE BEGIN 3 */
 }

到此移植就完成结束,下载到开发板后效果如下:

移植效果移植效果.jpg

总结

stm32Cube生态提供了良好的GUI界面设计工具。大缩短用的是GUI设计成本。

但是,STM32CubeMX对STM32H755的支持还有些欠缺,比如目前只支cortex-M4内核的TouchGFX,生成的MDK工程也还有许多BUG,还有就是生成的STM32CubeIDE的TouchGFX工程还不支持TouchGFX Desinger等






关键词: STM32H755     Cortex-M4     ST778    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]