查看: 2244|回复: 0

【安富莱】F429的12期emWin实战例程发布,含音乐和视频播放器

[复制链接]
  • TA的每日心情
    奋斗
    2015-4-12 12:17
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-1-18 15:12:15 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 baiyongbin2009 于 2017-1-18 15:14 编辑

    【安富莱】F429的12期emWin实战例程发布,含音乐和视频播放器


    说明:
    1. 感谢大家对我们安富莱电子的支持,已经连续4年发布年末福利了,今年我们继续发布年末福利。
    2. 本次教程实战与娱乐并存,娱乐性的有音乐播放器,视频播放器,收音机等。虽然是娱乐性的,音乐播放器和视频播放器的RTOS+GUI+FS多任务通信框架还是极具参考价值的。实战性的有ATM机,智能家居主界面设计,时钟表盘,多功能仪表,万年历等。涉及到ADC和DAC的波形处理的界面设计,放到做新版DSP教程时再弄。
    3.  关于例程的说明(重要,必读)
    (1)跟以往一样,本次制作暂时先不做教程文档,仅制作例子。
    (2)每个例子有uCOS-III和FreeRTOS两个版本,显示屏限制为800*480分辨率,电阻屏或者电容屏均可,其它分辨率显示屏不做了。
    (3)实战性的例子都是MDK和IAR两个版本,娱乐性的仅做了MDK版本,其中IAR固定为IAR7.5,其它版本未做测试。MDK请使用4.74及其以上版本,含MDK5。由于MDK5.13及其以上版本在UTF-8编码上与低版本不同,编译后有编码错误,将相应的文件用记事本再次另存为UTF-8即可,详情在我们新版emWin教程第22章的22.6小节有说明。
    (4)视频播放器的例子是采用的是RTX+RL-FlashFS+emWin的版本,未做uCOS-III和FreeRTOS,主要是综合性能差些,表现为刷新慢,问题较多,所以不做这两个版本了。
    (5)使用音乐播放器和视频播放器两个例子,务必将网盘中提供的“SD卡根目录存放的两个测试文件夹”里面的两个文件夹Music和Video复制到SD卡根目录里面。
    4.  STM32F429平台:http://bbs.armfly.com/read.php?tid=15518
    ********************************************************************
    百度云下载链接:http://pan.baidu.com/s/1pLqBvmV  密码:0f3l
    1.png

    ********************************************************************
    本次仅为音乐播放器和视频播放器录制了视频效果。其它的部分例子效果可以看我们早期为我们的
    STM32F407开发板录制的视频,现在换成STM32F429了,效果更流畅些,还有几个例子暂未录制。
    1.  基于STM32F429的WAV,MP3软解播放器,带类似千千静听的频谱效果:



    2.  基于STM32F429的视频播放器,利用三缓冲机制,全程几乎无闪烁和撕裂感





    ***************************************************************
    第1期:ATM机
    配套例子:
    V6-900_STemWin提高篇实验_ATM机(uCOS-III)
    V6-901_STemWin提高篇实验_ATM机(FreeRTOS)
    工程介绍:
    1. 所有界面支持按键操作
      (1)K2按键用于控件焦点的切换,切换时,所选择的控件会出现浅色边框
      (2)K3按键用于进入下一个界面
      (3)摇杆的OK键用于选择相应控件后,触发控件所对应的操作。
    2. 采用触摸方式操作界面时,如果进入到没有按钮控件的界面时,可以点击屏幕中间部分进入下一页。
    截图效果:
    2.png

    ***************************************************************
    第2期:酿造机过程演示
    配套例子:

    V6-902_STemWin提高篇实验_酿造机过程演示(uCOS-III)
    V6-903_STemWin提高篇实验_酿造机过程演示(FreeRTOS)
    工程介绍:
    1. 这个工程主要是动态过程的演示,无需使用触摸功能。
    2. 主要演示了两个动态过程,每个过程都是建立在一个窗口上,通过设置窗口的显示层从而实现轮流显示。
    3. 刷新的时候,将静态图和动态图分开,只需刷新动态图即可。
    4. 注意函数GUI_SetClipRect的使用。
    截图效果:
    3.png

    4.png

    ***************************************************************
    第3期:洗衣机简易操作界面
    配套例子:

    V6-904_STemWin提高篇实验_洗衣机简易操作界面(uCOS-III)
    V6-905_STemWin提高篇实验_洗衣机简易操作界面(FreeRTOS)
    工程介绍:
    1. 本实例有三个值得大家学习的地方:
      (1)自定义按钮的实现,主要是通过自定义按钮的回调函数实现按钮的不同显示效果。
      (2)自定义菜单的实现,显示效果更好。
      (3)内存设备相关函数GUI_MEMDEV_Create,GUI_MEMDEV_Select,GUI_MEMDEV_Write的使用。
               通过函数GUI_MEMDEV_Create申请所需的内存设备,然后通过函数GUI_MEMDEV_Select选择要使用的函数,这样绘图操作实现的界面就可以直接写到内存设备中,需要显示的时候直接调用函数
    GUI_MEMDEV_Write就能进行显示。   
    2. 本设计界面支持按键操作:
      (1)按键K3实现ESCAPE功能,也就是退出显示界面,在本工程中主要是关闭子菜单。
      (2)摇杆的上下左右键实现菜单选项的选项和子菜单的显示,按下摇杆的下键就能显示子菜单
      (3)摇杆的OK可以触发洗衣机界面中的start启动按钮。
    截图效果:
    5.png

    ***************************************************************
    第4期:简易表盘界面设计
    配套例子:

    V6-906_STemWin提高篇实验_简易表盘界面设计(uCOS-III)
    V6-907_STemWin提高篇实验_简易表盘界面设计(FreeRTOS)
    工程介绍:
    1. 本实例有两个值得大家学习的地方:   
    (1)函数GUI_MEMDEV_CreateAuto和GUI_MEMDEV_DrawAuto的使用,保证时钟表盘不闪烁。
    (2)抗锯齿多边形的绘制GUI_AA_FillPolygon。
    2. 本设计界面仅支持演示。
    3. 注意演示时间和指针旋转速度的设置,防止指针旋转的时候出现卡顿的现象。
    截图效果:
    6.png

    7.png

    ***************************************************************
    第5期:监护仪界面设计
    配套例子:

    V6-908_STemWin提高篇实验_监护仪界面设计(uCOS-III)
    V6-909_STemWin提高篇实验_监护仪界面设计(FreeRTOS)
    工程介绍:
    1. 本实例有三个值得大家学习的地方:
    (1)同一个窗口多个定时器的创建。
    (2)通过外部按键创建窗口。
    (3)多波形的显示。
    2. 按下K2按键创建病人信息窗口。   
        按下K3按键关闭创建的窗口。
    截图效果:
    8.png

    9.png

    ***************************************************************
    第6期:智能家居主界面设计
    配套例子:

    V6-910_STemWin提高篇实验_智能家居主界面设计(uCOS-III)
    V6-911_STemWin提高篇实验_智能家居主界面设计(FreeRTOS)
    工程介绍:
    1. 本实例有两个值得大家学习的地方:
       (1). ICONVIEW控件的使用。
       (2). 主界面支持触摸操作,也支持按键操作。
    2. 按键K2实现对话框的删除。
       按键K3实现ICONVIEW的聚焦。
       摇杆UP键实现ICONVIEW选项的上移。
       摇杆DOWN键实现ICONVIEW选项的下移。
       摇杆LIGHT键实现ICONVIEW选项的左移。
       摇杆RIGHT键实现ICONVIEW选项的右移。
       摇杆OK键实现对话框的创建。
    截图效果:
    10.png

    11.png

    12.png


    ***************************************************************
    第7期:多功能仪表界面设计
    配套例子:

    V6-912_STemWin提高篇实验_多功能仪表界面设计(uCOS-III)
    V6-913_STemWin提高篇实验_多功能仪表界面设计(FreeRTOS)
    工程介绍:
    1. 这个例子是由官方的多功能仪表例子修改而来。官方的这个例子设计的较复杂,实现太偏底层,已经将表盘界面的实现专门整理到了文件App_ScaleWin.c里面。其实官方是打算专门做一个仪表控件的,但是由于参数设计较麻烦,没有专门作出控件。
    2. 表盘使用方法
    (1)使用前要先初始化表盘结构体变量,本例子是初始化的表盘结构体数组_Scale,初始化了4个。
    (2)通过函数_CreateScaleWindow创建表盘窗口,表盘界面效果是在此窗口上面实现的。本例子最大支持同时创建四个。
    (3)表盘的转动是通过函数_MoveNeedle实现的,如果实现其它方式的转动,修改此函数即可。
    3. 界面上面创建了4个按钮,每个按钮实现不同的表盘效果切换。
    截图效果:
    13.png

    14.png

    15.png

    16.png

    ***************************************************************
    第8期:万年历
    配套例子:

    V6-914_STemWin提高篇实验_万年历(uCOS-III)
    V6-915_STemWin提高篇实验_万年历(FreeRTOS)
    工程介绍:
    1. GUI主界面左上角的按钮用于弹出时间,日期和闹钟设置界面,右上角的按钮未用到。用户移植这个例子的话,此按钮用于返回系统主界面。此万年历例子都是在对话框上面实现的,移植很方便。
    2. 闹钟时间到后,蜂鸣器鸣叫5声。
    截图效果:
    17.png

    18.png


    ***************************************************************
    第9期:WAV,MP3软解播放器,带类似千千静听频谱
    配套例子:

    V6-916_STemWin提高篇实验_WAV,MP3软解播放器,带类似千千静听频谱(uCOS-III)
    V6-917_STemWin提高篇实验_WAV,MP3软解播放器,带类似千千静听频谱(FreeRTOS)
    工程介绍:
    1. 重要提示
    (1)测试此例子前,务必将我们提供的文件夹“SD卡根目录存放的两个测试文件夹”里面的两个文件夹复制粘贴到SD根目录下。
    (2)首次使用先点击歌曲列表,歌曲名会被记录到listview控件里面,然后就可以任意操作了。如果文件夹中歌曲较多,首次打开会稍慢些,主要是因为要获取每首歌曲的播放时间。以后打开就比较快了,主要是对歌曲列表对话框做了隐藏和显示处理,而不是重复的创建和删除。
    2. 功能说明
    (1)支持上一曲,下一曲,快进和快退,常用的采样率和码率都支持,单声道和立体声也都支持。
    (2)音频频谱方面,支持幅值谱和对数谱切换。
    (3)emWin任务是低优先级任务,音乐解码任务是高优先级任务,两个任务之间通过任务消息队列和事件标志进行通信。
    (4)歌曲列表对话框做了模态处理,这样用户打开此对话框后只能操作这个对话框,而不能操作主界面。
    截图效果:
    19.png

    20.png

    21.png

    22.png

    23.png

    24.png

    ***************************************************************
    第10期:视频播放器
    配套例子:
    V6-918_STemWin提高篇实验_视频播放器(RTX版本,仅支持MDK4.74)
    工程介绍:
    1. 重要提示:
    (1)本例子仅支持MDK4.74编译,且由于文件系统RL-FlashFS的限制,文件名仅支持ascii字符。
    (2)测试此例子前,务必将我们提供的文件夹“SD卡根目录存放的两个测试文件夹”里面的两个文件夹复制粘贴到SD根目录下。
    (3)首次使用先点击视频列表,视频名会被记录到listview控件里面,然后就可以任意操作了。如果文件夹中视频较多,首次打开会稍慢些,主要是因为要获取每个视频的播放时间。以后打开就比较快了,主要是对视频列表对话框做了隐藏和显示处理,而不是重复的创建和删除。
    (4)创建两个任务,一个GUI任务,用来刷emWin本身支持的emf格式视频,另一个是音频播放任务,用来播放视频中的声音,音频文件是从原始视频中提取出来的,使用MP3格式。由于两个任务都要操作文件系统,分别读取emf视频文件和MP3格式的音频文件,所以文件系统就需要互斥访问,也就是得支持重入。
    (5)优化:重新添加uCGUI3.98里面的JPEG解码文件,覆盖emWin原有的解码,并做DMA2D优化,emWin自带的卡死,基本300ms左右一帧480*272图片,而优化后,差不多80ms左右就一帧。缺点就是跟emWin原有的机制兼容有些问题,不过程序设计中已经将其避免。emWin支持的三缓冲可以继续使用。
    2. 功能说明:
    (1) 支持上一个,下一个,快进和快退。
    (2)emWin任务是低优先级任务,音频解码任务是高优先级任务,两个任务之间通过消息邮箱和事件标志进行通信。
    (3)视频列表对话框做了模态处理,这样用户打开此对话框后只能操作这个对话框,而不能操作主界面。
    截图效果:
    25.png

    26.png

    27.png

    28.png

    29.png

    ***************************************************************
    第11期:收音机
    配套例子:
    V6-919_STemWin提高篇实验_收音机(uCOS-III)
    V6-920_STemWin提高篇实验_收音机(FreeRTOS)
    工程介绍:
    1. 为了更好搜索电台,务必给耳机接口插上耳机当做收音机天线用。
    2. 开机上电后,要先点击界面上的开启键,默认是自动搜索模式。开启后点击左下角的搜索键,可以自动搜索电台。通过左键和右键实现搜到的电台切换。界面上面的6个颜色块是搜索到电台显示,也可以点击切换。
    3. 界面左上角的按钮是切换到手动搜索,然后通过左键和右键分别实现每次递减0.1MHz和递增0.1MHz。要切换回自动搜索,点击左下角按钮即可。作为两种模式的区分,手动搜索模式下,滚动条上面的文本会显示Manual;自动搜索模式下,滚动条上的文本会显示Auto。
    4. 调整滚动条也可以选择电台,范围87.5MHz到108.0MHz。
    截图效果:

    30.png

    31.png


    ***************************************************************
    第12期:录音机
    配套例子:

    V6-921_STemWin提高篇实验_录音机(uCOS-III)
    V6-922_STemWin提高篇实验_录音机(FreeRTOS)
    工程介绍:
    1. 录音机的功能做的比较简单,左上角和右上角的两个按钮未用到。
    2. 采样率固定为32KHz,16bit,单通道。
    3. 点击开始按钮,开始录音,录音30秒,务必保证录音结束后才可以播放。
    4. 显示的频谱是对数谱,即对FFT变化后幅值取对数。
    截图效果:
    32.png

    33.png

    34.png

    35.png
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 13:55 , Processed in 0.145430 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.