GUIX与STM32H7相关资源
ThreadX官方文档
ThreadX代码仓库
STM32Cube MCU包
GUIX代码仓库
x-cube-azrtos-h7
GUIX与此处使用的LCD
GUIX提供了一个软件GUIX Studio专门用于设计图形界面,可以在Microsoft Store微软商店中下载,需要注意的是这个软件在国内无法下载,需要将地区切换为美国。此处使用的LCD是使用ST7735主控,SPI进行通信的,颜色格式为RGB565。
GUIX移植
首先在GUIX代码仓库中下载GUIX,将GUIX的.\common\scr
、.\port\cortex_m7\scr
(无实际源文件)文件夹下的源文件全部添加到工程中,GUIX的驱动需要自己实现。
GUIX驱动实现
对于简单应用只需要实现函数toggle_function
(直接用作全局刷新)即可,并使用_gx_display_driver_565rgb_setup
设置该回调函数,_gx_display_driver_565rgb_setup
实现了一组默认的驱动函数的赋值,若需要替换默认驱动函数,对GX_DISPLAY *display
直接赋值即可。对于这个项目,由于直接使用的SPI进行驱动,直接将st7735_toggle_function
封装为已有的驱动函数lcd_draw_pixelmap
即可。
VOID st7735_toggle_function(struct GX_CANVAS_STRUCT *canvas,
GX_RECTANGLE *dirty_area)
{
lcd_draw_pixelmap(0, 0, canvas->gx_canvas_x_resolution,
canvas->gx_canvas_y_resolution,
(uint8_t *)canvas->gx_canvas_memory);
}
UINT st7735_graphics_driver_565(GX_DISPLAY *display)
{
_gx_display_driver_565rgb_setup(display, GX_NULL, st7735_toggle_function);
return GX_SUCCESS;
}
GUIX Studio使用
首先进行工程的配置,主要是需要更改屏幕的分辨率,颜色格式。此处使用的是RGB565格式,因此选择16bpp,右侧format不用勾选,默认为RGB565格式,由于驱动设置,需要勾选reverse byte order,如下图所示。
如何使用GUIX Studio不是本文的重点,故忽略。设计完成后,需要生成全部文件(Project -> Generate All Output Files),并将生成的代码添加到嵌入式工程中。
启动GUIX
如下所示,需要调用这些函数,注意,函数中的命名需要和GUIX Studio中一致
void st7735_lcd_application(void)
{
GX_WINDOW_ROOT *root;
GX_WINDOW *widget;
gx_system_initialize();
gx_studio_display_configure(ST7735_LCD, st7735_graphics_driver_565,
LANGUAGE_ENGLISH, ST7735_LCD_THEME_1, &root);
gx_studio_named_widget_create("window", (GX_WIDGET *)root,
(GX_WIDGET **)&widget);
gx_widget_show(root);
gx_system_start();
}
最后在线程中调用该函数即可启动GUIX。