# 开发流程 ## 第三方开发板的适配 若使用启明智显提供的开发板时可以直接通过加载配置文件的形式完成开发板各外设的初始化。在使用第三方开发板时需要按照 typedef void (*qmsd_board_init_cus)(qmsd_screen_rotation_t dir); 的函数指针定义自行实现相关初始化以及和UI库的对接。之后使用void qmsd_set_board_init_cus(qmsd_board_init_cus init_cus);来指定使用第三方的初始化方法。 ## 添加8ms生成的UI代码 1.在8ms平台编译UI工程 2.确认工程编译成功 3.下载8ms源码 4.删除{sdk_dir}/components/qmsd_ui目录,将下载的源码解压至对应目录 5.参照上述章节进行编译和烧录 ## 添加自定义逻辑代码 和UI相关的代码可以添加至 {sdk_dir}/components/qmsd_ui/ui/qmsd_internal_ui_cb.c中的各控件的回调函数中,也可以借助8ms的自定义回调将时间参数传递至{sdk_dir}/main/control/qmsd_ui_cb.c 中的qmsd_ui_cb中进行处理。值得注意的是这些函数正常情况下只会运行在GUI线程中,在这些函数中添加耗时或阻塞任务会导致UI性能下降或卡顿。 ## 跨线程的UI调度 当需要跨线程修改UI线程内部资源时需要使用互斥锁保证线程安全,可以使用以下api获取、释放互斥锁。 ```shell int qmsd_gui_lock(uint32_t timeout) void qmsd_gui_unlock(void) ``` 或者使用UI库内置的文本协议,详见 http://doc.8ms.xyz/docs/gui/gui-1dgqjgc2de1lk