需求
使用 stm32cubeide 移植 guix 到 stm32u575 上面。
解决
简单界面设计
- 下载 guix studio
- 按照例子做个最简单界面
- 导出
resource
和specification
源码
- 下载 guix studio 对应版本源码
- 把源码中的
common
整个文件夹放到工程中 - 把源码中的
port
中相应架构的gx_port.h
放到工程中 - 开启
GX_INCLUDE_USER_DEFINE_FILE
, 把 guix studio 的例子中的gx_user.h
复制到工程中。
板级相关
- 在
port
文件夹中新增gx_display_driver_rgb565_stm32u575
相关源文件和头文件。 - 在文件中新增:
UINT GuixDriverSetupRgb565(GX_DISPLAY *display) { LcdInit(); _gx_display_driver_565rgb_setup(display, (VOID*)GUIX_SCREEN_HANDLE, GuixBufferToggleRgb565); display -> gx_display_driver_horizontal_line_draw = GuixHorizontalLineDirectDrawRgb565; display -> gx_display_driver_vertical_line_draw = GuixVerticalLineDirectDrawRgb565; display -> gx_display_driver_pixel_write = GuixPixelDirectWriteRgb565; display -> gx_display_driver_pixel_blend = GuixPixelDirectBlendRgb565; // display -> gx_display_driver_buffer_toggle = stm324xg_16bpp_buffer_toggle; display -> gx_display_handle = GUIX_SCREEN_HANDLE; return(GX_SUCCESS); }
- 新增上面相关的这些画点和线的函数。
线程
- 新增线程函数, 其中设置都是和 guix studio 导出的文件相关的。
GX_WINDOW *pScreen; GX_WINDOW_ROOT *root; void GuixMainEntry(ULONG thread_input) { (void)thread_input; gx_system_initialize(); // gx_system_memory_allocator_set(memory_allocate, memory_free); gx_studio_display_configure(PRIMARY, GuixDriverSetupRgb565, LANGUAGE_ENGLISH, PRIMARY_THEME_1, &root); gx_studio_named_widget_create((char *)"Button_Screen", (GX_WIDGET *)root, (GX_WIDGET **)&pScreen); gx_widget_show(root); gx_system_start(); while (1) { tx_thread_sleep(20); } }
- 把线程函数添加到启动线程中即可。