ucGUI3.9版本快速移植构建

  • 移植前提条件
  • 涉及文件
  • 移植过程
    • 修改绘制驱动文件
    • 修改配置文件
  • 打包进工程
  • 涉及的资源获取

在之前的博客中移植了STemwin5.32版本的,最近更换了 GD芯片所以STemwin没法用了,只有移植emwin或者是ucGUI所有芯片都可以用了!
之前都是分散修改GUIxxx.c文件或者GUIxxx.h文件,现在打包成一个接口文件和一个库文件,不用再折腾了,累。。。

移植前提条件

参考博客STemwin的移植

涉及文件

  • emwPort.c–修改驱动
  • emwPort.h–修改配置
  • ucGUI3.9.a
  • 一堆ucGUI的头文件,无需改

移植过程

修改绘制驱动文件

ucGUI底层将调用以下绘制函数,必须对画点函数进行填充

/***  @file: emwPort.c**  @date: 2020/5/8**  @author: aron566**  @brief:emwin 移植接口**  @version:v1.0*/
#ifdef __cplusplus ///<use C compiler
extern "C" {#endif
/** Includes -----------------------------------------------------------------*/
/* Private includes ----------------------------------------------------------*/
#include "emwPort.h"
#include "GUI.h"
/** Private typedef ----------------------------------------------------------*/
/** Private macros -----------------------------------------------------------*/
/** Private constants --------------------------------------------------------*/
/** Public variables ---------------------------------------------------------*/
/** Private variables --------------------------------------------------------*/
/** Private function prototypes ----------------------------------------------*/
/** Private user code --------------------------------------------------------*//** Public application code --------------------------------------------------*/
/*******************************************************************************
*
*       Public code
*
********************************************************************************
*/
/******************************************************************* @brief   读取个某点的颜色值* @param[in]   x,y:坐标* @return  此点的颜色
******************************************************************/
uint32_t EMPORT_LCD_ReadPoint(int x, int y)
{return *(uint16_t*)((uint32_t)ltdc_layer1[0] + 2 * (EMPORT_LCD_X_PIXEL * y + x));
}/******************************************************************* @brief   画点* @param[in]   x,y:坐标  color:颜色* @return None
******************************************************************/
void EMPORT_LCD_DrawPoint(int x ,int y ,uint32_t color)
{uint16_t *TargetAddr = (uint16_t*)((uint32_t)ltdc_layer1[0] + 2 * (EMPORT_LCD_X_PIXEL * y + x));*TargetAddr = (uint16_t)color;
}/******************************************************************* @brief   在指定区域内填充单个颜色* @param[in]   (sx,sy),(ex,ey):填充矩形对角坐标,区域大小为:(ex-sx+1)*(ey-sy+1)* @param[in]   color:要填充的颜色* @return     None
******************************************************************/
void EMPORT_LCD_Fill(int sx ,int sy ,int ex ,int ey ,uint32_t color)
{/*NEW Code*/
//      LCD_DrawFullRect(sx ,sy, ex+1, ey+1);for (; sy <= ey; sy++) {EMPORT_LCD_DrawHLine(sx ,sy ,ex ,color);}
}/********************************************************************* @brief   绘制横线* @param[in]   X起点* @param[in]   Y起点* @param[in]   X长度* @param[in]   颜色* @retval  None* @author  aron566* @version v1.0* @date    2020/5/9*******************************************************************/
void EMPORT_LCD_DrawHLine(int x0 ,int y, int x1 ,uint32_t color)
{for (; x0 <= x1; x0++) {EMPORT_LCD_DrawPoint(x0, y, color);}
}/********************************************************************* @brief   绘制竖线* @param[in]   X起点* @param[in]   Y起点* @param[in]   Y长度* @param[in]   颜色* @retval  None* @author  aron566* @version v1.0* @date    2020/5/9*******************************************************************/
void EMPORT_LCD_DrawVLine(int x ,int y0 ,int y1 ,uint32_t color)
{for (; y0 <= y1; y0++) {EMPORT_LCD_DrawPoint(x, y0, color);}
}/********************************************************************* @brief   GUI触摸接口 ,获取X坐标* @param   None* @retval  X坐标 * @author  aron566* @version v1.0* @date    2020/5/8*******************************************************************/
int EMPORT_Touch_GetPhyX(void)
{return 0;
}/********************************************************************* @brief   GUI触摸接口 ,获取Y坐标* @param   None* @retval  Y坐标 * @author  aron566* @version v1.0* @date    2020/5/8*******************************************************************/
int EMPORT_Touch_GetPhyY(void)
{return 0;
}/********************************************************************* @brief   GUI时基 放入1ms中断* @param   None* @retval  None * @author  aron566* @version v1.0* @date    2020/5/8*******************************************************************/
void EMPORT_GUI_Inc_Ticks_Port(void)
{extern volatile GUI_TIMER_TIME OS_TimeMS;OS_TimeMS++;
}
#ifdef __cplusplus ///<end extern c
}
#endif
/******************************** End of file *********************************/

修改配置文件

emwPort.h

/***  @file: emwPort.h**  @date: 2020/5/8**  @author: aron566**  @brief:emwin 移植接口*  *  @version:v1.0*/
#ifndef __EMWPORT_H
#define __EMWPORT_H
#ifdef __cplusplus ///<use C compiler
extern "C" {#endif
/** Includes -----------------------------------------------------------------*/
#include <stdint.h> /**< nedd definition of uint8_t */
#include <stddef.h> /**< need definition of NULL    */
//#include <stdbool.h>/**< need definition of BOOL    */
#include <stdio.h>  /**< if need printf             */
#include <stdlib.h>
#include <string.h>
/** Private includes ---------------------------------------------------------*/
#include "cmsis_os.h"
#include "ipa.h"
/** Private defines ----------------------------------------------------------*/
/*** @name EMWIN移植配置* @{*/
#define EMPORT_FRAME_BUFF_ADDR  ((void*)(LCD_FRAME_BUFFER+BUFFER_OFFSET))
#define EMPORT_BUFF_SIZE        (1024*20U)
#define EMPORT_BLOCKSIZE        (0x80)
#define EMPORT_USE_OS           (0)     /**< 启用OS     */
#define EMPORT_XSIZE_PHYS       (480)   /**< 配合显示方向的X像素*/
#define EMPORT_YSIZE_PHYS       (320)   /**< 配合显示方向的Y像素*/
#define EMPORT_LCD_X_PIXEL      (320)   /**< 实际X像素  */
#define EMPORT_LCD_Y_PIXEL      (480)   /**< 实际Y像素  */
#define EMPORT_LCD_BITSPERPIXEL (16)    /**< 像素位大小 */
#define EMPORT_LCD_FIXEDPALETTE (565)   /**< 颜色格式   */
#define EMPORT_LCD_SWAP_RB      (1)     /**< 红蓝交换   */
#define EMPORT_LCD_CONTROLLER   (566)   /**< 控制器名称 */
#define EMPORT_NUM_LAYERS       (1)     /**< 最大层级   */
#define EMPORT_SUPPORT_TOUCH    (0)     /**< 支持触摸   */
#define EMPORT_SUPPORT_UNICODE  (1)     /**< 支持UNICODE*/
#define EMPORT_SUPPORT_MOUSE    (0)     /**< 支持鼠标   */
#define EMPORT_WINSUPPORT       (1)
#define EMPORT_SUPPORT_MEMDEV   (1)
#define EMPORT_SUPPORT_AA       (1)     /**< 支持反锯齿 */
#define EMPORT_SUPPORT_DEVICES  (1)
#define EMPORT_SUPPORT_NOTIFY_VIS_CHANGED    (1)
#define EMPORT_DEFAULT_FONT     (&GUI_FontD24x32)  /**< 默认字体大小*/
#define EMPORT_COLOR_CONVERSION GUICC_M565//GUICC_565//GUICC_888
#define EMPORT_DISPLAY_DRIVER   GUIDRV_WIN32//GUIDRV_TEMPLATE/*** @name EMWIN调整显示方向* @{*/
/* 1 1 0 横竖屏切换 */
#define EMPORT_LCD_SWAP_XY      (1)
#define EMPORT_LCD_MIRROR_X     (1)
#define EMPORT_LCD_MIRROR_Y     (0)
/** @}*/
#define EMPORT_TOUCH_SWAP_XY    (1)
#define EMPORT_TOUCH_MIRROR_X   (0)
#define EMPORT_TOUCH_MIRROR_Y   (1)
#define EMPORT_CALIBRATION      (4000)
#define EMPORT_TOUCH_AD_LEFT    (300)
#define EMPORT_TOUCH_AD_RIGHT   (3700)
#define EMPORT_TOUCH_AD_TOP     (300)
#define EMPORT_TOUCH_AD_BOTTOM  (3700)
/** @}*/
/** Exported typedefines -----------------------------------------------------*//** Exported constants -------------------------------------------------------*/
/** Exported macros-----------------------------------------------------------*/
/** Exported variables -------------------------------------------------------*/
/** Exported functions prototypes --------------------------------------------*/
uint32_t EMPORT_LCD_ReadPoint(int x ,int y);
void EMPORT_LCD_DrawPoint(int x ,int y ,uint32_t color);
void EMPORT_LCD_Fill(int sx ,int sy ,int ex ,int ey ,uint32_t color);
void EMPORT_LCD_DrawHLine(int x0 ,int y, int x1 ,uint32_t color);
void EMPORT_LCD_DrawVLine(int x ,int y0 ,int y1 ,uint32_t color);
void EMPORT_GUI_Inc_Ticks_Port(void);
int EMPORT_Touch_GetPhyX(void);
int EMPORT_Touch_GetPhyY(void);
#ifdef __cplusplus ///<end extern c
}
#endif
#endif
/******************************** End of file *********************************/

打包进工程

三个文件夹:
INCLUDE ucGUI的一堆头文件
LIB 库文件
PORT ucGUI移植接口

加入工程,图为IAR工程,两个文件即可,接口文件,库文件,其他的头文件路径包含即可

涉及的资源获取

前往下载

ucGUI3.9版本快速移植构建相关推荐

  1. 申威 linux内核,一种申威防火墙快速移植高版本linux内核的方法与流程

    技术特征: 1.一种申威防火墙快速移植高版本linux内核的方法,其特征在于,包括以下步骤: s1:预先制作生成内存根文件系统的压缩文件: 所述步骤s1包括以下步骤: s11:通过编译busybox制 ...

  2. 全志android平台下的SDK快速移植

     分享一下 全志平台的SDK移植过程: 第 5 页 共 18 页 1. 概述 T3 平台快速移植文档,本文基于 T3 T3-P1 方案. 1.1. 名词解释 1. vendor-name soft ...

  3. a33linux快速移植,A33 Android快速移植指南.pdf

    A33 Android快速移植指南.pdf A33 l a 快速移植指南 i t n e d i f n o C 第 2 页 共 44 页 文档履历 版本号 日期 制/修订人 制/修订记录 V1.0 ...

  4. 基于MT6752/32平台 Android L版本驱动移植步骤

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  5. 嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX

    嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX 本篇笔记将简单介绍RTX,包括基本架构,如何在Keil中配置.需要安装ARM-MDK和一块硬件板,笔记以STM32F4Discovery为例子 ...

  6. cordova指定版本_Cordova/Ionic构建android Gradle错误:支持的最小Gradle版本是2.14.1。当前版本是2.13...

    如果您不小心,Android Studio使用的Gradle版本与Cordova/cordova-android在其自动生成的应用程序代码中指定的Gradle版本可能不匹配.如你所知,运行 $ cor ...

  7. AutoJs7、8版本快速接通vscode进行调试脚本

    AutoJs7.8版本快速接通vscode进行调试脚本 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!

  8. Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建

    Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Gerrit版本选择 1>.查看Gerrit官网 ...

  9. 关于hostapd 2.7版本的移植问题

    关于hostapd 2.7版本的移植问题 libnl库 openssl库 hostapd 编译 事情起因,客户奇葩要求wifi热点只能连一个用户,hostap.conf添加参数max_num_sta= ...

  10. 粪菌移植构建人源化菌群小鼠的分析探讨

    来源:公众号(无菌动物) 利用无菌小鼠进行人源化菌群移植构建人源化菌群小鼠模型(HFA小鼠)是一种研究人类肠道菌群和人类健康或疾病关系的一个良好模型.然而现有的粪菌悬液制备.粪菌移植(FMT)及人源化 ...

最新文章

  1. postgreSQL怎样创建一个序列号/自动递增的字段
  2. pytorch 不同设备下保存和加载模型,需要指定设备
  3. 主机名修改 Oracle监听器,oracle agent不能启动的解决方案
  4. Booting Android: bootloaders, fastboot and boot images
  5. Palo Alto Networks全球化安全堡垒理念 提升企业防御能力
  6. 常常被人忽略的VC备份
  7. 2、买卖股票的最佳时机 II
  8. java sec_java.security文件
  9. 区位码,国标码,交换码,内码,外码
  10. java lbs云_LBSyuncunchudemo 一个使用百度地图API,利用LBS云存储云检索的代码,可以测试 。 Java Develop 238万源代码下载- www.pudn.com...
  11. 一元一次方程用计算机怎么解,一元一次方程怎么解 [解一元一次方程的基本步骤]...
  12. xshell绿色版安装,无限制
  13. 软件测试培训两个月骗局?培训机构到底如何选择?
  14. 圆柱体积怎么算立方公式_圆柱体积计算公式 怎么计算
  15. PS2游戏手柄——基于STC15W4K32S4
  16. 牛牛卡牌游戏 javascript
  17. java操作word文档(文字,图片,表格添加以及替换操作)
  18. NVDIMM原理与应用之一:基本原理
  19. 江在川上曰:less样式预编译
  20. 抽象类和接口的相同点与不同点

热门文章

  1. java 纯真ip 乱码_UTF-8使用纯真IP数据库乱码问题
  2. PX4 编译报错问题解决方法、PX4切换固定版本编译
  3. 网上支付之易宝支付接入规范
  4. 被黑多年的WPS上市,背后:雷军拒绝收购,死磕微软 31 年
  5. 首批列入民族网游工程的21种游戏公布
  6. .NET单机软件保护策略(2)软件证书制作
  7. java正则表达式或_java 正则表达式
  8. 宏基4752g linux驱动下载,宏基4752g显卡驱动
  9. 数学建模练习-----基于无线通信基站的室内定位问题
  10. SQL Server 2019重新安装失败的处理方法