zoukankan      html  css  js  c++  java
  • 【第3版emWin教程】第36章 emWin6.x光标

    教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429

    第36章       emWin6.x光标

    本期教程比较简单,给大家讲解光标(游标)的使用。在小型的嵌入式系统中,外接鼠标和键盘的情况比较少,所以光标的使用就显得不那么重要,不过在需要触摸校准的时候光标就比较重要了,可以帮助我们很方便的看出X,Y轴镜像和翻转问题。

    36.1  初学者重要提示

    36.2 emWin支持的游标效果

    36.3 模拟器上的光标例程

    36.4 实验例程说明(RTOS)

    36.5 实验例程说明(裸机)

    36.6 总结

    36.1 初学者重要提示

    1.   对于初学者来说,本章节比较简单,只需知道函数GUI_CURSOR_Show()是用来显示光标的,函数GUI_CURSOR_Hide()是用来隐藏光标的。
    2.   光标所有API函数在emWin手册中都有讲解,下图是中文版手册里面API函数的位置

     

    下图是英文版手册里面API函数的位置:

     

     

    36.2 emWin支持的光标效果

     当前emWin支持的游标效果就是上面几种,初始化emWin后是不显示游标的,需要调用函数GUI_CURSOR_Show()才会显示出来,默认显示出来的是GUI_CursorArrowM(中箭头)。要选择其它的箭头可以调用函数GUI_CURSOR_Select()进行选择其它的箭头。STemWin进入到5.22版本后加入了动态的游标,效果如下:

     

     

    36.3 模拟器上的光标例程

    官方有一个例子是专门的演示游标的,将光标的各个API函数都演示了一遍,程序位置在:

     

     

    对于这个例子,在我们emWin教程第1版的第23章简单进行了讲解,还有动态光标的显示也做讲解了,本次新升级的教程不再做讲解。

    36.4 实验例程说明(RTOS)

    配套例子:

    V7-548_emWin6.x实验_光标(RTOS)

    实验目的:

    1. 学习emWin的光标,可以手动触摸界面来看光标的移动。
    2. emWin功能的实现在MainTask.c文件里面。

    实验内容:

    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分辨率界面效果。

     

     

    36.5 实验例程说明(裸机)

    配套例子:

    V7-547_emWin6.x实验_光标(裸机)

    实验目的:

    1. 学习emWin的光标,可以手动触摸界面来看光标的移动。
    2. 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动态内存。

    36.6 总结

    游标显示的知识就跟大家讲这么多,相对来说比前面几期都要简单很多,实际应用中知道如何将其显示出来即可。

    微信公众号:armfly_com 安富莱论坛:www.armbbs.cn 安富莱淘宝:https://armfly.taobao.com
  • 相关阅读:
    [kuangbin带你飞]专题十二 基础DP1 E
    hdu 1203 I NEED A OFFER! (01背包)
    hdu 2602 Bone Collector (01背包)
    hdu 4513 吉哥系列故事——完美队形II (manacher)
    hdu 2203 亲和串 (KMP)
    hdu 1686 Oulipo (KMP)
    hdu 1251 统计难题 (字典树)
    hdu 2846 Repository (字典树)
    hdu 1711 Number Sequence (KMP)
    poj 3461 Oulipo(KMP)
  • 原文地址:https://www.cnblogs.com/armfly/p/15319649.html
Copyright © 2011-2022 走看看