【第3版emWin教程】第34章 emWin6.x的AppWizard界面开发工具使用方法
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429
第34章 emWin6.x的AppWizard界面开发工具使用方法
本期教程跟大家讲解emWin6.x新版GUIBuilder工具AppWizard。掌握AppWizard比较容易,大家很快就可以上手,仅需注意使用上的一些坑即可。
目录
34.1 初学者重要提示
34.2 AppWizard简介
34.3 AppWizard创建界面
34.3.1 下载安装AppWizard
34.3.2 创建AppWizard工程
34.3.3 添加控件
34.3.4 设置默认的位图格式
34.3.5 运行AppWizard
34.3.6 导出AppWizard代码
34.4 AppWizard生成的VS工程使用VS2019运行方法
34.5 AppWizard创建的界面添加到工程
34.5.1 添加一批xxxx_Private.h文件到工程
34.5.2 添加AppWizard界面文件到工程
34.5.3 添加工程路径
34.5.4 修改程序
34.6 实验例程说明(RTOS)
34.7 实验例程说明(裸机)
34.8 总结
34.1 初学者重要提示
1、 使用的AppWizard版本一定要和emWin版本匹配,本章配套例子使用的emWin版本是V6.16。对应的AppWizard版本是V1.20,下载地址:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=105049 。
2、 AppWizard工程路径不支持中文,使用时特别注意。
3、 AppWizard生成的emWin6.x工程可以方便的融合之前的低版本emWin工程代码,在回调函数里面可以方便的添加之前基于窗口或者对话框创建的界面。
34.2 AppWizard简介
AppWizard是emWin出的新一代GUI开发工具,方便用户做界面设计。早期一直用的GUIBuilder,但功能比较弱。新版工具要强很多。
34.3 AppWizard创建界面
下面使用AppWizard设计个界面,然后将设计的界面移植到板子上运行,让大家有个整体的认识,后面章节再为大家说明AppWizard具体选项的功能。
34.3.1 下载安装AppWizard
下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=105049 。安装后效果如下:
34.3.2 创建AppWizard工程
选择Create new project:
下面要需要设置配置项,主要是Color format颜色格式别配置错了,要跟开发板emWin工程的颜色格式一致,我们这里设置为16位色,M565。
创建后效果如下:
34.3.3 添加控件
依次点击左上角的控件对象:Screen和Box:
设置背景色:
添加两个按钮控件和一个二维码:
34.3.4 设置默认的位图格式
点击菜单Edit -> Preferences:
由于我们前面设置的M565颜色格式,这里设置GUICC_M565选项即可:
这个设置很重要,否则很容易造成AppWizard生成的工程代码移植到板子上硬件异常。
34.3.5 运行AppWizard
点击下面这个小按钮可以运行设计的界面:
34.3.6 导出AppWizard代码
点击菜单File -> Export & Save即可导出:
导出文件在创建时设置的路径中。
34.4 AppWizard生成的VS工程使用VS2019运行方法
导出的VS工程文件位于如下路径:
运行后效果如下:
34.5 AppWizard创建的界面添加到工程
AppWizard生成界面代码后,将其添加到工程中。这个过程有几个注意事项,在下面步骤中会为大家说明。
34.5.1 添加一批xxxx_Private.h文件到工程
开发板的工程文件里面没有这些文件,需要大家从AppWizard工程路径:Simulation\GUI_Lib 里面复制到开发板工程路径\emWin\Include里面,下面是部分截图,详情看本章节配套的例子即可:
34.5.2 添加AppWizard界面文件到工程
方便起见,将AppWizard所有文件复制到开发板工程里面:
添加到工程的效果如下:
34.5.3 添加工程路径
仅添加一个路径选项即可:
34.5.4 修改程序
主要修改两个地方:
- bsp.c文件将LCD背光点亮。
void bsp_Init(void) {/* 省略未写 *//* 延迟200ms再点亮背光,避免瞬间高亮 */bsp_DelayMS(200); LCD_SetBackLight(255); }
- APPWConf.c文件
使能三缓冲,关闭文件系统。
/********************************************************************* * * Multibuffering */ static U8 _MultibufEnable = 1;/********************************************************************* * * Static code * ********************************************************************** */ /********************************************************************* * * _InitText */ static void _InitText(void) {//// Empty, because application does not contain any text// }/********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * APPW_X_Setup */ void APPW_X_Setup(void) {APPW_SetpfInitText(_InitText);//APPW_X_FS_Init();APPW_MULTIBUF_Enable(_MultibufEnable);APPW_SetData(_apRootList, _NumScreens, _aVarList, _NumVars); }
通过前面这几步就完成了AppWizard工程界面的移植。剩下就可以编程工程代码下载到板子运行了。
34.6 实验例程说明(RTOS)
配套例子:
V7-542_emWin6.x实验_AppWizard基础使用(RTOS)
实验目的:
- 学习AppWizard界面设计。
实验内容:
1、K1按键按下,串口或者RTT打印任务执行情况(串口波特率115200,数据位8,奇偶校验位无,停止位1)。
2、(1) 凡是用到printf函数的全部通过函数App_Printf实现。
(2) App_Printf函数做了信号量的互斥操作,解决资源共享问题。
3、默认上电是通过串口打印信息,如果使用RTT打印信息:
MDK AC5,MDK AC6或IAR通过使能bsp.h文件中的宏定义为1即可
#define Enable_RTTViewer 1
4、各个任务实现的功能如下:
App Task Start 任务 :启动任务,这里用作BSP驱动包处理。
App Task MspPro任务 :消息处理,这里用作LED闪烁。
App Task UserIF 任务 :按键消息处理。
App Task COM 任务 :暂未使用。
App Task GUI 任务 :GUI任务。
μCOS-III任务调试信息(按K1按键,串口打印):
RTT 打印信息方式:
程序设计:
任务栈大小分配:
μCOS-III任务栈大小在app_cfg.h文件中配置:
#define APP_CFG_TASK_START_STK_SIZE 512u
#define APP_CFG_TASK_MsgPro_STK_SIZE 2048u
#define APP_CFG_TASK_COM_STK_SIZE 512u
#define APP_CFG_TASK_USER_IF_STK_SIZE 512u
#define APP_CFG_TASK_GUI_STK_SIZE 2048u
任务栈大小的单位是4字节,那么每个任务的栈大小如下:
App Task Start 任务 :2048字节。
App Task MspPro任务 :8192字节。
App Task UserIF 任务 :2048字节。
App Task COM 任务 :2048字节。
App Task GUI 任务 :8192字节。
系统栈大小分配:
μCOS-III的系统栈大小在os_cfg_app.h文件中配置:
#define OS_CFG_ISR_STK_SIZE 512u
系统栈大小的单位是4字节,那么这里就是配置系统栈大小为2KB
emWin动态内存配置:
GUIConf.c文件中的配置如下:
#define EX_SRAM 1/*1 used extern sram, 0 used internal sram */#if EX_SRAM #define GUI_NUMBYTES (1024*1024*24) #else #define GUI_NUMBYTES (100*1024) #endif
通过宏定义来配置使用内部SRAM还是外部的SDRAM做为emWin的动态内存,当配置:
#define EX_SRAM 1 表示使用外部SDRAM作为emWin动态内存,大小24MB。
#define EX_SRAM 0 表示使用内部SRAM作为emWin动态内存,大小100KB。
默认情况下,本教程配套的所有emWin例子都是用外部SDRAM作为emWin动态内存。
emWin界面显示效果:
800*480分辨率界面效果。
34.7 实验例程说明(裸机)
配套例子:
V7-541_emWin6.x实验_AppWizard基础使用(裸机)
实验目的:
- 学习emWin矢量字体库的使用方法,Unicode编码
- emWin功能的实现在MainTask.c文件里面。
emWin界面显示效果:
800*480分辨率界面效果。
emWin动态内存配置:
GUIConf.c文件中的配置如下:
#define EX_SRAM 1/*1 used extern sram, 0 used internal sram */#if EX_SRAM #define GUI_NUMBYTES (1024*1024*24) #else #define GUI_NUMBYTES (100*1024) #endif
通过宏定义来配置使用内部SRAM还是外部的SDRAM做为emWin的动态内存,当配置:
#define EX_SRAM 1 表示使用外部SDRAM作为emWin动态内存,大小24MB。
#define EX_SRAM 0 表示使用内部SRAM作为emWin动态内存,大小100KB。
默认情况下,本教程配套的所有emWin例子都是用外部SDRAM作为emWin动态内存。
34.8 总结
本章节主要是为大家讲解了AppWizard的基础用法,后续章节将深入为大家说明。
【第3版emWin教程】第34章 emWin6.x的AppWizard界面开发工具使用方法相关推荐
- 【第3版emWin教程】第45章 emWin6.x窗口管理器之定时器使用
教程不断更新中:第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第48章(2021-09-13) - uCOS & uCGUI &am ...
- 【第3版emWin教程】第50章 emWin6.x的AppWizard使用控件经典回调方式
教程不断更新中:第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第50章(2021-10-01) - uCOS & uCGUI &am ...
- 【第3版emWin教程】第42章 emWin6.x窗口管理器之回调消息类型
教程不断更新中:第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第48章(2021-09-13) - uCOS & uCGUI &am ...
- 【第3版emWin教程】第48章 emWin6.x对话框基础知识
教程不断更新中:第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第48章(2021-09-13) - uCOS & uCGUI &am ...
- 【第3版emWin教程】第49章 emWin6.x的AppWizard创建控件回调消息
教程不断更新中:第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第50章(2021-10-01) - uCOS & uCGUI &am ...
- 【第3版emWin教程】第35章 emWin6.x的AppWizard中文实现方法
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第35章 emWin6.x的AppWizard中文实 ...
- 2022版Maven教程 - 第六章 单一架构案例
2022版Maven教程 - 第六章 单一架构案例 一.创建工程,引入依赖 1.架构 ①架构的概念 ②单一架构 2.创建工程 3.引入依赖 ①搜索依赖信息的网站 [1]到哪儿找? [2]怎么选择? ② ...
- JavaScript DOM 编程艺术 (第二版)学习之3-4章
JavaScript DOM 编程艺术 (第二版)学习之3-4章 第三章 DOM 3.1 文档:DOM中的"D" 3.2 对象:DOM中的"O" 3.3 模型: ...
- (原创)LEON3入门教程(一):什么是LEON3?需要哪些开发工具和软件?
写在最前面的话 2010年年底我开始接触LEON3,花了3个月时间把LEON3源代码大致阅读完,然后参照Gaisler Research 网站上提供的leon3-altera-ep3c25源代码,修改 ...
最新文章
- Java基类共同属性设置_java – 你有一个Hibernate实体的基类吗?
- 贴片按键开关_轻触开关的常用类型和规格型号
- linux之nautilus .命令浏览当前文件目录
- ajax php 返回数组并父子给变量,将字符串变量从PHP发送回数组变量的ajax ...?
- Python全栈开发:web框架们
- VirtualBox 安装 Ubuntu 14.10 花屏 解决方案
- 重学数据结构——快速排序,二分法查找
- 力扣-1566 重复至少 K 次且长度为 M 的模式
- html 滑动返回顶部,返回页面顶部的几种方式总结
- 仿QQ聊天软件2.0版
- 《STM32开发指南》ALIENTEK战舰STM32开发板资料
- 计算机硬盘哒哒响,教你轻松解决硬盘异响(咔咔或者嗒嗒声)
- 解决 手心输入法 导致 Navicat 闪退问题
- 【题解】SCOI-2010-连续攻击游戏
- 希尔排序、快速排序的每一趟
- PX4固定翼姿态控制器详细介绍(一)
- CSDN博客编写快捷键
- python中不同文件之间使用所谓的全局变量
- pngimg 可以商用吗_避免侵权!这10个免费可商用的图片网站,请一定收好
- Java_socket通信基础补充
热门文章
- 毕设项目分享 炸弹人小游戏设计与实现 (源码)
- stm32毕设 STM32的智能宠物投喂系统(全套资料)
- deepin linux清理软件包
- 2021年B级轿车油耗排行榜:3个1.4T排量车系油耗最低,TOP前十中日系车占有6席(附年榜TOP45详单)
- 自动驾驶中点云配准常用方法
- 阿里云服务器性能监控
- 百度、长沙加码自动驾驶,湖南阿波罗智行科技公司成立
- python的head函数_head first python_1 递归函数来处理列表
- 交货单过账:BAPI_OUTB_DELIVERY_CONFIRM_DEC 、WS_DELIVERY_UPDATE
- sysbench mysql图表_sysbench_mysql