硬件:RT-Thread官方ART-PI H750开发版,正点原子4.3寸RGBLCD屏(800*480) 软件:开发环境 MDK 或 RT-Thread Studio 1.1.5,TouchGFXDesigner v4.15 和 STM32CubeMX V6.0.1,env工具
为了方便广大ART-PI的用户使用TouchGFX,免去移植的烦恼,官方已经在ART-PI的SDK中集成了TouchGFX软件库,只需要简单的配置,便可以轻松使用TouchGFX。
rt-thread
及 libraries
文件创建符号链接E:\project\sdk-bsp-stm32h750-realthread-artpi\projects\art_pi_blink_led>mklink /D rt-thread ..\..\rt-thread
为 rt-thread <<===>> ..\..\rt-thread 创建的符号链接
E:\project\sdk-bsp-stm32h750-realthread-artpi\projects>mklink /D libraries ..\..\libraries
为 libraries <<===>> ..\..\libraries 创建的符号链接
E:\project\sdk-bsp-stm32h750-realthread-artpi\projects>
不使用Micro LIB库。
使用TouchGFX 4.15.0 Designer 仿真 在libraries文件夹下找到TouchGFX,打开art_pi.touchgfx。
使用Visual Studio 仿真 在TouchGFX文件夹下找到simulator,打开Application.sln。
在TouchGFX Designer设计完UI,刷新工程,即可将UI更新到项目中。
1. 如何更换屏幕 ART-PI的LCD驱动默认支持RGB接口,更好屏幕后,只需要修改对应的参数即可。
用文本文档打开ApplicationTemplate.touchgfx.part,调整分辨率
修改好,双击打开,重新生成UI工程。 2. 如何更改色深 默认支持RGB888 24位色深和RGB565 16位色深,只需要修改LCD_BITS_PER_PIXEL和LCD_PIXEL_FORMAT这两个宏,
用文本文档打开ApplicationTemplate.touchgfx.part,调整色深
修改好,双击打开,重新生成UI工程。 3. C语言和C++如何互相调用 c方式编译和c++方式编译,其差异就在于符号表标识符。同一个函数名,在c方式编译的其函数名跟编译前的函数一致,c++方式编译的则是以函数名结合参数作为编译后的函数名。cpp编译器是兼容c语言的编译方式的,所以在编译cpp文件的时候,调用到.c文件的函数的地方时,需要用extern “C”指定用c语言的方式去编译它,extern “C”是c++方式编译才认识的关键字,在c++编译的方式会定义__cplusplus宏,c语言编译器没有__cplusplus宏和extern “C”关键字。 C++语言调用C文件中的函数: 在编译cpp文件的时候,调用到.c文件的函数的地方时,需要用extern “C”指定用c语言的方式去编译它
extern "C"
{
uint32_t LCD_GetXSize();
uint32_t LCD_GetYSize();
}
C语言的头文件要使用宏定义包含函数接口。
#ifdef __cplusplus
extern "C" {
#endif
.
.
.
#ifdef __cplusplus
}
#endif
C语言调用C++文件中的函数: 对于C++文件中的普通函数,可以直接用extern "C" 对函数进行修饰,对于c++的重载函数或成员函数,需要进行二次封装后,再使用extern "C"对函数修饰,函数内部的代码依然是使用c++的编译器编译。 例如在xx.cpp中对函数进行声明,在xx.c中进行调用:
xx.cpp
extern "C" void touchgfx_init();
extern "C" void touchgfx_taskEntry();
void touchgfx_init()
{
}
void touchgfx_taskEntry()
{
}
xx.c
void touchgfx_init(void);
void touchgfx_taskEntry(void);
void MX_TouchGFX_Init(void)
{
touchgfx_init();
}
void MX_TouchGFX_Process(void)
{
touchgfx_taskEntry();
}
4. 建议的开发方式 建议使用touchGFX Designer配合Visual Stdudio来开发UI,与硬件解耦,采用前后端分离的开发方式,可以提高开发效率。 代码中可以使用宏来规避开发环境不同导致的错误:
/*例如通过宏:*/
#ifdef SIMULATOR
/*使用VS仿真的代码*/
#else
/*使用HAL库的代码*/
#endif
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有