你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 4441|回复: 3

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

[复制链接]

296

主题

634

回帖

29

蝴蝶豆

金牌会员

最后登录
2020-11-20
发表于 2017-1-18 14:47:11 | 显示全部楼层 |阅读模式
本帖最后由 baiyongbin2009 于 2017-1-18 14:55 编辑

【安富莱】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平台:链接
****************************************************************
百度云下载链接:https://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


<
回复

使用道具 举报

8

主题

130

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-3-22
发表于 2017-1-18 17:19:18 | 显示全部楼层
好强大哦     
回复 支持 反对

使用道具 举报

50

主题

1057

回帖

67

蝴蝶豆

论坛元老

最后登录
2020-12-2
发表于 2017-1-18 20:33:15 | 显示全部楼层
armfly的工作令人敬佩
回复 支持 反对

使用道具 举报

0

主题

13

回帖

0

蝴蝶豆

初级会员

最后登录
2020-11-9
发表于 2018-2-7 16:20:33 | 显示全部楼层
谢谢
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版