你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32U3评测】移植TouchGFX之二成功移植TouchGFX

[复制链接]
lugl 发布时间:2025-5-24 10:51

【前言】

在上一篇【STM32U3评测】移植TouchGFX之一——驱动ST7735LCD屏 - STM32团队 ST意法半导体中文论坛

我成功的实现驱动LCD屏。这一篇将详细介绍如下移植TouchGFX。

【实现步骤】

1、在stm32cubeMX中打开CRC,同时打开touchgfx,进行配置如下:

image.png

根据我的屏为128*160的分辨率,来设定,同时使用rgb565为颜色格式。

2、开启一个定时器中断为touchgfx来提供心跳包。

image.pngimage.png

设定中断回调为96M/96/50000 = 为20ms提供一次LCD的刷新。

3、生成工程后使用mdk打开工程,同时在TouchGFX目录下,使用touchGFX designer打开工程,设计简单页面如下:

image.png

4、生成工程后面mdk工程中刷新代码,首先对接自定义LCD屏,在工程的Application/User/TouchGFX/target目录下的TouchGFXXHAL.cpp中添加用户代码。

首先在最前面的头部用户代码中添加st7735的驱动头文件:

    #ifdef __cplusplus
    extern "C"{
    #include "st7735.h"
    }
#endif
#include <touchgfx/hal/OSWrappers.hpp>

image.png

5、在flushFrameBuffer函数中添加刷新屏的代码:

image.png

volatile uint16_t* buffer = getClientFrameBuffer()+(rect.y*ST7735_WIDTH)+rect.x;
    ST7735_DrawImage(rect.x, rect.y, ST7735_WIDTH,ST7735_HEIGHT, (uint8_t *)buffer);

6、最文件最尾添加给心跳函数定期调用的代码:

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

image.png

7、在main.c中的定时器回调函数中添加touchgfxSignalVSync的调用:

image.png

9、在main中,添加定时器TIM6的中断开启:

image.png

【移植效果】

下载到开发板后,效果如下:

73b5616245d27106001fff33e7bf30b.jpg

image.png
image.png
收藏 评论0 发布时间:2025-5-24 10:51

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版