ucGUI3.9版本快速移植构建
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版本快速移植构建相关推荐
- 申威 linux内核,一种申威防火墙快速移植高版本linux内核的方法与流程
技术特征: 1.一种申威防火墙快速移植高版本linux内核的方法,其特征在于,包括以下步骤: s1:预先制作生成内存根文件系统的压缩文件: 所述步骤s1包括以下步骤: s11:通过编译busybox制 ...
- 全志android平台下的SDK快速移植
分享一下 全志平台的SDK移植过程: 第 5 页 共 18 页 1. 概述 T3 平台快速移植文档,本文基于 T3 T3-P1 方案. 1.1. 名词解释 1. vendor-name soft ...
- a33linux快速移植,A33 Android快速移植指南.pdf
A33 Android快速移植指南.pdf A33 l a 快速移植指南 i t n e d i f n o C 第 2 页 共 44 页 文档履历 版本号 日期 制/修订人 制/修订记录 V1.0 ...
- 基于MT6752/32平台 Android L版本驱动移植步骤
基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...
- 嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX
嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX 本篇笔记将简单介绍RTX,包括基本架构,如何在Keil中配置.需要安装ARM-MDK和一块硬件板,笔记以STM32F4Discovery为例子 ...
- cordova指定版本_Cordova/Ionic构建android Gradle错误:支持的最小Gradle版本是2.14.1。当前版本是2.13...
如果您不小心,Android Studio使用的Gradle版本与Cordova/cordova-android在其自动生成的应用程序代码中指定的Gradle版本可能不匹配.如你所知,运行 $ cor ...
- AutoJs7、8版本快速接通vscode进行调试脚本
AutoJs7.8版本快速接通vscode进行调试脚本 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!
- Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建
Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Gerrit版本选择 1>.查看Gerrit官网 ...
- 关于hostapd 2.7版本的移植问题
关于hostapd 2.7版本的移植问题 libnl库 openssl库 hostapd 编译 事情起因,客户奇葩要求wifi热点只能连一个用户,hostap.conf添加参数max_num_sta= ...
- 粪菌移植构建人源化菌群小鼠的分析探讨
来源:公众号(无菌动物) 利用无菌小鼠进行人源化菌群移植构建人源化菌群小鼠模型(HFA小鼠)是一种研究人类肠道菌群和人类健康或疾病关系的一个良好模型.然而现有的粪菌悬液制备.粪菌移植(FMT)及人源化 ...
最新文章
- postgreSQL怎样创建一个序列号/自动递增的字段
- pytorch 不同设备下保存和加载模型,需要指定设备
- 主机名修改 Oracle监听器,oracle agent不能启动的解决方案
- Booting Android: bootloaders, fastboot and boot images
- Palo Alto Networks全球化安全堡垒理念 提升企业防御能力
- 常常被人忽略的VC备份
- 2、买卖股票的最佳时机 II
- java sec_java.security文件
- 区位码,国标码,交换码,内码,外码
- java lbs云_LBSyuncunchudemo 一个使用百度地图API,利用LBS云存储云检索的代码,可以测试 。 Java Develop 238万源代码下载- www.pudn.com...
- 一元一次方程用计算机怎么解,一元一次方程怎么解 [解一元一次方程的基本步骤]...
- xshell绿色版安装,无限制
- 软件测试培训两个月骗局?培训机构到底如何选择?
- 圆柱体积怎么算立方公式_圆柱体积计算公式 怎么计算
- PS2游戏手柄——基于STC15W4K32S4
- 牛牛卡牌游戏 javascript
- java操作word文档(文字,图片,表格添加以及替换操作)
- NVDIMM原理与应用之一:基本原理
- 江在川上曰:less样式预编译
- 抽象类和接口的相同点与不同点