【前言】 TouchGFX可以非常方便的进行人机交互,支持的屏也非常多,小到OLED屏,大到RGB屏。这次使用ST7735进行移植试验。 其中st7735的驱动移植,请大家移步【NUCLEO-H533RE评测】3 SPI驱动st7735 - STM32团队 ST意法半导体中文论坛 (stmicroelectronics.cn) 【实验步骤】 1、在驱动好st7735的基础之上添加x-coube-touchgfx组件,如果没有安装这个组装的,自行到官网查看例程。 2、添加一个定时器TIM7用于touchGFX的心跳包。 3、激活touchgfx组件,按下图的步骤打开。 其中格式选择RGB565,像素大小根据自己的屏的参数进行设置。 4、保存后生成工程,在工程的TouchGFX下面,打开TouchGFX。 5、打开toucgFX 设计器,往其中添加几个组装,并生成工程。 6、在stm32CoubeIDE工程中的TouchGFX->target目录下有TouchGFXHAL.cpp文件,打开它,添加与LCD屏的接口函数。 在文件中添加st7735.h的头文件。以及<touchgfx/hal/OSWrappers.hpp>用于同步信号的获取。 然后在void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)函数中,添加一帧图像的刷新代码: uint16_t height,i; volatile uint16_t buffer = getClientFrameBuffer()+(rect.yDISPLAY_WIDTH)+rect.x; ST7735_SetAddressWindow(rect.x,rect.y,rect.x+rect.width-1,rect.y+rect.height-1); ST7735_WriteCommand(0x2c); uint8_t spisend_buff[DISPLAY_WIDTH*2]; for(height=0;height<rect.height;height++) {
} } 最后在文件低部声明一个可以供C调用的同步函数 extern "C" void touchgfxSignalVSync(void) { / VSync has occurred, increment TouchGFX engine vsync counter / touchgfx::HAL::getInstance()->vSync(); / VSync has occurred, signal TouchGFX engine / touchgfx::OSWrappers::signalVSync(); } 最后回到main.c中,添回Tim7的回调函数: / USER CODE BEGIN 4 / extern void touchgfxSignalVSync(void); void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM7) {
} } / USER CODE END 4 / 到此,移植完毕,下载到开发板如,如期的实现了touchGFX的移植 : |
【STM32H7S78-DK】汽车仪表系统
实战经验 | STM32H5 USBD Classic驱动 CDC移植
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
NUCLEO-H563ZI刷入Micropython固件并点亮LED灯
基于STM32H5的DA之初体验经验分享(带 Trust Zone)
【免费申请】高性能和低成本双Buff加持的NUCLEO H533RE,等你来!
【NUCLEO-H533RE评测】+点亮小灯
【NUCLEO-H533RE评测】使用双存储区Flash 在不关闭系统的状态下,实现OTA
【NUCLEO-H533RE评测】高性能-全频,硬件加速在电机控制相关应用的速度对比。
* p% ~5 J2 b: g B
链接:https://pan.baidu.com/s/1PKaZoNcdvo2qXpPa9QBxKw?pwd=ite7 8 U7 u9 e) B4 N5 t
提取码:ite7 $ l& M# @4 w5 f* ?4 o: v5 u3 z
--来自百度网盘超级会员V6的分享# b/ S+ m0 \4 u; [2 {4 E0 e
不错不错,学习一下