61.1 战舰STM32开发板综合实验简介
战舰STM32开发板是ALIENTEK的第二款STM32开发板(第一款是MiniSTM32开发板),它的出现,主要是为了弥补Mini板在一些应用上的缺陷,提供大家一个更强大的STM32开发板平台。
战舰STM32开发板的硬件资源在第一章我们已经详细介绍过,是十分强大的,强大的硬件必须配强大的软件才能体现其价值,如果IPhone装的是andriod而不是ios,IPhone就不是那个IPhone了,可能早就被三星打败了。同样,如果开发板只是一堆硬件,那就和一堆废品差不多。
战舰STM32开发板的硬件在V1.0版本的时候(2010年12月份),基本就定型了,之后近2年多的时间,我们一直在编写代码,其中绝大部分时间是在写开发板的综合实验(即本实验),我们坚持资料不完善,坚决不卖,这样战舰STM32开发板的上市时间一推再推,硬件版本也从1.0升级到了1.8,甚至有朋友笑言,我都从大二等到大四了…在此,对那些还在等待我们开发板的朋友说声抱歉,谢谢你们的支持和理解。我想说,用心做产品,真的不容易,战舰开发过程中的点点滴滴,有机会再和大家分享。
在今年7月份的时候,终于把战舰STM32开发板综合实验的最后一个功能写完了,至此综合实验的开发基本完成,前前后后,耗时近两年。
接下来我们就看看战舰STM32开发板综合实验的功能吧。
战舰STM32开发板综合实验总共有18大功能,分为2页,每页9个功能,页面的切换采用滑动操作。18大功能分别为:电子图书、数码相框、音乐播放、应用中心、时钟、系统设置、FC游戏机、收音机、记事本、运行器、3D、手写画笔、照相机、录音机、USB连接、TOM猫、无线传书、计算器。
电子图书,支持.txt/.c/.h/.lrc等4种格式的文件阅读。
数码相框,支持.bmp/.jpeg/.jpb/.gif等4种格式的图片文件播放。
音乐播放,支持.mp3/.wma/.wav/.flac/.ogg/.mid/等常见音频文件的播放。
应用中心,可以扩展16个应用程序,我们实现了其中1个,其他留给大家自己扩展。
时钟,支持温度、时间、日期、星期的显示,并加入时间3D效果显示。
系统设置,整个综合实验的设置。
FC游戏机,即NES模拟器,支持.nes文件的运行,通过开发板玩NES游戏。
收音机,支持全范围FM(76Mhz~108Mhz)接收,支持手动/半自动/全自动搜台。
记事本,可以实现文本(.txt/.c/.h/.lrc)记录编辑等功能,支持中英文输入,手写识别。
运行器,即SRAM IAP功能,支持.bin文件的运行(文件大小+SRAM大小≤60K)。
3D,可以测量角度,并支持3D演示。
手写画笔,可以作画/对bmp图片进行编辑,支持画笔颜色/尺寸设置。
照相机,可以拍照(需要摄像头模块支持),并支持成像效果设置。
录音机,支持wav文件格式的录音(8Khz/16位单声道录音)。
USB连接,支持和电脑连接读写SD卡/SPI FLASH 的内容。
TOM猫,和手机的TOM猫游戏的功能类似,模仿人声,进行人机对话。
无线传书,通过无线模块,实现两个开发板之间的无线通信。
计算器,一个科学计算器,支持各种运算,精度为12位,支持科学计数法表示。
以上,就是综合实验的18个功能简介,涉及到的内容包括:GUI(ALIENTEK编写,非ucGUI)、UCOS、内存管理、图片解码、MP3播放、文件系统、USB、IAP、NES模拟器、手写识别、汉字输入等非常多的内容。下面,我们将详细介绍这18个功能。
61.2战舰STM32开发板综合实验详解
要测试战舰STM32开发板综合实验的全部功能,大家得自备1个SD卡和1个ALIENTEK摄像头模块。不过,就算没有这两个东西,综合实验还是可以正常运行的,只是有些限制而已,比如:不能保存新建的记事本、不能保存新建的画图、不能使用录音机功能、不能使用摄像头功能等。除了这几个,其他功能都可以正常运行。
我们先来看看战舰STM32开发板综合实验的启动界面,启动界面如图61.2.1所示:
图61.2.1 综合实验启动界面 注意:综合实验支持屏幕截图(通过USMART控制,波特率为115200),本章所有图片均来自屏幕截图!
上图显示了综合实验的详细启动过程,首先显示了版权信息,软硬件版本,接着显示了LCD驱动器的型号(LCD ID),然后显示CPU和内存信息,之后显示SPI FLASH的大小,接着开始初始化文件系统(FATFS),然后显示SD卡容量和FLASH Disk容量(注意 FLASH Disk就是指SPI FLASH,因为我们划分了6M空间给FATFS管理,所以FLASH Disk的容量为6124KB)。
接着,就是硬件检测,完了之后检测字库和系统文件,再初始化触摸屏,加载系统参数(参数保存在24C02里面),最后启动系统。在加载过冲中,任何一个地方出错,都会显示相应的提示信息,请在检查无误后,按复位重启。
这里有几个注意的地方:
① 如果没插入SD卡,会显示SD Card ERROR,不过系统还是会继续启动,因为没有SD卡系统还是可以启动的(前提是SPI FLASH(W25Q64)里面的系统文件和字库文件都是正常的)。
② 系统文件和字库文件都是存在SPI FLASH(W25Q64)里面的,如这两个文件被破坏了,在启动的时候,会执行字库和系统文件的更新,此时你得准备一个SD卡,并拷贝SYSTEM文件夹(注意:这个SYSTEM文件夹不是开发板例程里的SYSTEM文件夹,而是光盘根目录àSD卡根目录文件àSYSTEM文件夹)到SD卡根目录,以便系统更新时使用。
③ FLASH Disk是从SPI FLASH(W25Q64)里面分割6M空间出来实现的,强制将4K字节的扇区改为512字节使用,所以在写操作的时候擦除次数会明显提升(8倍以上),因此,如非必要,请不要往FLASH Disk里面写文件。频繁的写操作,很容易将FLASH Disk写挂掉。
④ 在系统启动时,一直按着KEY0不放(加载到Touch Check的时候),可以进入强制校准。当你发现触摸屏不准的时候,可以使用这个办法强制校准。
⑤ 在系统启动时,一直按着KEY1不放(加载到Font Check的时候),可以强制更新字库。
⑥ 本系统用到触摸按键TPAD做返回(类似手机的HOME键),所以请确保多功能端口P14的ADC和TPAD用跳线帽短接!
⑦ 如果插入了SD卡,系统在启动的时候,会在SD卡的根目录创建4个文件夹:TEXT、RECORDER、PAINT和PHOTO。其中,TEXT文件夹用来保存新建的文本文件(记事本功能时使用);RECORDER文件夹用来保存录音文件(录音机功能时使用);PAINT文件夹用来保存新建的画板文件(手写画笔功能时使用);PHOTO文件夹用来保存相片(照相机功能时使用)。
在SYSTEM Starting…之后,系统启动UCOSII,并加载SPB界面,在加载成功之后,来到主界面,主界面如图61.2.2所示:
图61.2.2 综合实验系统主界面 这里主界面默认是简体中文的,我们可以在系统设置里面设置语言,战舰STM32开发板综合实验支持3种语言选择:简体中文、繁体中文和英文。
在进入主界面之后,开发板上的DS0开始有规律的短亮(每2.5秒左右亮100ms),提示系统运行正常,我们可以通过DS0判断系统的运行状况。另外,如果运行过程中,出现HardFault的情况,系统则会进入HardFault中断服务函数,此时DS0和DS1都会闪烁,提示系统故障。同时在串口打印故障信息。通过串口,系统会打印其他很多信息,最常打印的是内存使用率,然后我们还可以通过USMART对系统进行调试。
如图61.2.2所示,综合实验的主界面分为2页,通过滑动切换,系统刚启动的时候加载的是主界面A,通过滑动可以切换到主界面B,类似现在的智能手机。主界面,总共18个功能图标,我们可以随便点击一个即可选中,如图61.2.3所示:
图61.2.3 选中电子图书 从上图可以看出,选中之后,图标发生了一点点变化,手机图标也是类似的效果,其实就是一个alphablend。再次点击该图标,我们就可以进入电子图书功能。
在任何界面下,都可以通过按TPAD返回上一级,直至返回到主界面。PS:TPAD就是战舰STM32开发板上的一个触摸按键,即右下角的ALIENTEK LOGO!!
在介绍完系统启动之后,我们开始介绍各个功能。
双击主界面的电子图书图标,进入如图61.2.1.1所示的文件浏览界面:
图61.2.1.1 文件浏览界面 上图中,左侧的图是我们刚刚进入的时候看到的界面(类似在XP上打开我的电脑),可以看到我们有2个盘:SD卡和FLASH 磁盘。我们可以选择任何一个打开,并浏览里面的内容。注意,即使没有插入SD卡,还是会出现SD卡图标,只是此时不能打开而已!
界面的上方显示文件/文件夹的路径。如果当前路径是磁盘/磁盘根目录则显示磁盘图标,如果是文件夹,则显示文件夹图标,另外,如果路径太深,则只显示部分路径(其余用…代替)。
界面的下方显示磁盘/文件夹信息。
界面的下方,显示磁盘信息/当前文件夹信息。对磁盘,则显示当前选中磁盘的总容量和可用空间,对文件夹,则显示当前路径下文件夹总数和文件总数,并显示你当前选中的是第几个文件夹/文件。
双击打开SD卡,得到界面如右侧图片所示,此时,因为SD卡根目录的文件数目超过了1页所能显示的数目,所以在右侧出现了滚动条,我们可以拖动滚动条/按滚动条两端的按钮/直接在屏幕中心区域拖动,来查找你要打开的文件/文件夹。
选中一个文件夹,双击打开得到如图61.2.1.2所示界面:
图61.2.1.2 目标文件和文本阅读 上图左侧显示了当前文件夹下面的目标文件(即电子图书支持的文件,包括.txt/.h/.c/.lrc等格式,其中.txt/.h/.c文件共用1个图标,.lrc文件单独一个图标)。另外,如果文件名太长,在我们选中该文件名后,系统会以走字的形式,显示整个文件名。
我们打开一个lrc文件,开始文本阅读,如图右侧的图片所示,同样我们可以通过滚动条/拖动的方式来浏览,图中我们还看到有一个光标,触摸屏点到哪,它就在哪里闪烁,可以方便大家阅读。
文本阅读是将整个文本文件加载到外部内存里面来实现的,所以文本文件最大不能超过外部内存总大小,即680KB(这里仅指受内存管理的部分,不是整个外部SRAM的大小)。
当我们想退出文本阅读的时候,通过按TPAD触摸按键实现,按一下TPAD,则又回到查找目标文件状态(左侧图),按返回按钮可以返回上一层目录,如果再按一次TPAD则直接返回主界面。
双击主界面的数码相框图标,进入文件浏览界面,这个和61.2.1节差不多,我们找到存放图片的文件夹,如图61.2.2.1所示:
图61.2.2.1 文件浏览和图片播放 左侧是文件浏览的界面,可以看到在图片文件夹下总共有18个文件,包括gif/jpg/bmp等,这些都是数码相框功能所支持的格式。右侧图片显示了一个正在播放的GIF图片,并在其左上角显示当前图片的名字。当然,我们也可以播放bmp和jpg文件,如图61.2.2.2所示:
图61.2.2.2 bmp和jpg图片播放 对于bmp和jpg文件,基本没有尺寸限制(但图片越大,解码时间越久),但是对于gif文件,则只支持尺寸在240*320以内的文件(因为gif图片我们不好做尺寸压缩处理),超过这个尺寸的gif图片将无法显示!!
我们可以通过按屏幕的上方(1/3屏幕)区域切换到上一张图片浏览;通过按屏幕的下方(1/3屏幕)区域切换到下一章图片;通过单击屏幕的中间(1/3屏幕)区域可以暂停自动播放,同时DS1亮,提示正在暂停状态,双击屏幕的中间区域会弹出返回按钮,如图61.2.2.3所示:
图61.2.2.3 弹出返回按钮 此时,我们可以通过按返回按钮返回文件浏览状态,当然也可以通过按TPAD按钮,直接返回文件浏览状态(不需要等返回按钮弹出)。
图片浏览支持两种自动播放模式:循环播放/随即播放。大家可以在系统设置里面设置图片播放模式。系统默认是循环播放模式,在该模式下,每隔4秒左右自动播放下一张图片,依次播放所有图片。而随机播放模式,也是每隔4秒左右自动播放下一张图片,但是不是顺序播放,而是随机的播放下一张图片。
另外需要注意,不是所有的jpg格式图片都可以在我们的开发板上正常播放的(解码程序的问题),只有JFIF格式的jpg文件才能正常解码显示,对于EXIF格式的jpg文件,则不能直接显示,大家可以将EXIF格式的jpg文件用XP的画图打开,然后再保存一下,就将EXIF格式转为JFIF格式了,这样就可以在开发板上正常解码,并显示了。
双击主界面的音乐播放图标,进入文件浏览界面,这个和61.2.1节差不多,只是这里我们浏览的文件变为了.mp3/.ogg/.wma/.flac/.wav/.midi等音频文件,我们找到存放音频文件的文件夹,如图61.2.3.1所示:
图61.2.3.1 文件浏览和ogg格式播放 左侧是文件浏览的界面,可以看到在MUSIC文件夹下总共有37个音频文件,包括mp3/ogg/wma/flac/wav等格式,这些都是播放器所支持的格式。右侧图片则是我们播放器的主界面,该界面显示了当前播放歌曲的名字、播放进度、播放时长、总时长、码率、音量、当前文件编号、总文件数、歌词等信息。下方的5个按键分别是:目录、上一曲、暂停/播放、下一曲、返回。点击播放进度条,可以直接设置歌曲播放位置,点击声音进度条,可以设置音量。上图为正在播放ogg文件,当然我们还可以播放其他音频格式,如图61.2.3.2所示:
图61.2.3.2 mp3格式播放和flac格式播放 图61.2.3.2中,分别显示了播放mp3格式和flac格式的音频文件。播放flac格式的时候,由于得不到正确的码率,所以总时间也是不正确的,图中数字仅供参考。另外播放flac因为要加载flac的patch,故无法加载频谱分析的patch,从而无法显示频谱,可以看到在右侧的图片中,没有频谱显示了,除了flac不能显示频谱,其他音频文件都是可以正常显示频谱的。
播放器还可以设置音效和播放模式(均在系统设置里面设置)。音效包括高低音调节、空间效果等设置。播放模式有3种:全部循环、随机播放、单曲循环,默认为全部循环。
另外,关于歌词显示。歌词必须和歌曲在同一个文件夹里面,且名字必须相同(当然后缀是不同的,歌词后缀为.lrc),这样才能正常显示歌词。对于没有歌词文件的歌曲,则直接播放,不显示歌词。歌词分为3行,第一行为上一句歌词,第二行为当前正在唱的歌词,第三行为将要唱的歌词。对于第二行歌词,如果太长,则会采用走字的形式来显示,走字时间由系统自动确定。
我们可以通过按目录按钮,来选择其他音频文件;按返回按键(或TPAD)则可以返回主界面,不过此时正在播放的歌曲还是会继续播放(后台播放),如果想关闭音乐播放器,则需要先按暂停,然后返回主界面,即可关闭音频播放器,否则音频播放器将一直播放音乐。
最后,我们默认是开启了FM发射的,在播放MP3的时候,音频会通过RDA5820发送出去,默认的频率是93.6Mhz,大家可以打开收音机调到93.6Mhz,就可以听到来自开发板的歌声了。FM发射频率和发射开关也都是可以在系统设置里面设置的,具体后面再介绍。
双击主界面的应用中心图标,进入应用中心界面,如图61.2.4.1所示:
图61.2.4.1 应用中心和红外遥控 左侧图片是我们刚进入应用中心看到的界面,在该界面下总共有16个图标,我们仅实现了第一个:红外遥控功能。其他都没有实现,大家可以自由发挥,添加属于自己的东西。双击第一个图标,会弹出一个红外遥控的小窗口,用于接收红外信号,如图61.2.4.1右侧图片所示。
此时,我们将红外遥控对准战舰STM32开发板的红外接收头,并按钮,则可以在红外遥控窗体里面显示键值、按键次数、符号等信息。如图61.2.4.2所示:
图61.2.4.2 红外按键解码 图中,我们按下了红外遥控器下的两个按键,分别得到两个按键的键值、次数和符号等信息。其中次数是代表我们持续按下红外遥控某个按键的时长,越长该值越大。
需要注意一点是,如果当前正在播放MP3,则红外解码成功率大大降低,原因是MP3播放任务的优先级最高,严重影响红外信号接收,导致解码成功率降低,当发现无法识别的时候,可以先停止MP3的播放再试试。
双击主界面的时钟图标,进入时钟界面,如图61.2.5.1所示:
图61.2.5.1 时钟界面 图61.2.5.1的左侧图片为加载时钟界面时的提示界面,表明没有检测到18B20,启用内部温度传感器,之后进入时钟主界面,如右侧图片所示。在时钟界面,我们显示了日期、时间、温度、星期等信息,并且在屏幕上方区域,有一个3D的时间在显示,3D时间显示会不停的变换位置,位置变化是无规律的。我们可以在系统设置里面设置时间和日期,并且还可以设置闹钟和闹铃,这个我们后面再介绍。
图中的温度是通过STM32自带的温度传感器采集的,所以有点偏高,如果我们在开发板的U13处插入DS18B20,则会采集来自18B20的温度,这样就比较准确了。
在进入时间界面以后,要退出该界面有2个办法:1,在屏幕向左滑动触摸;2,按TPAD返回。
双击主界面的系统设置图标,进入系统设置界面,如图61.2.6.1所示:
图61.2.6.1 系统设置主界面和时间设置界面 上图中左侧的图片为系统设置主界面,在系统设置里面,总共有19个项目:时间设置、日期设置、闹钟时间设置、闹钟开关设置、闹钟铃声设置、语言设置、数码相框设置、MP3播放模式设置、MP3音效设置、FM发射开关设置、FM发射频率设置、FM收音设置、背光设置、屏幕校准、传感器校准、系统文件更新、系统信息、系统状态、关于。通过这19个项目,我们
可以设置和查看各种系统参数。下面我们将一一介绍这些设置。
首先是时间设置,如图61.2.6.1右侧图片所示,双击时间设置,就会弹出一个时间是指对话框,通过这个对话框,我们就可以设置开发板的时间了。设置好之后点击确定回到系统设置主界面,如果想放弃设置,则直接点击取消(或TPAD)。
再来看看日期设置和闹钟时间设置,如图61.2.6.2所示:
图61.2.6.2 日期设置和闹钟时间设置 上图中,左侧的对话框用来设置系统日期,右侧的对话框用来设置闹钟时间。操作上同前面介绍的时间设置的方法一模一样。关于闹钟,我们等下再详细介绍,先看闹钟开关设置和闹钟铃声设置两个界面,如图61.2.6.3所示:
图61.2.6.3 闹钟开关设置和闹钟铃声设置 上图中,左侧对话框用来设置闹钟开关,右侧对话框用来设置闹钟铃声。这里,我们来介绍一下本系统的闹钟,本系统的闹钟以星期为周期,以时间为点实现闹钟,比如判断一个闹钟是否应该响铃的标准是:先判断星期的条件是否满足,比如上图我们设置是周一到周五闹铃,今天(10月5号)刚好是周五,所以满足星期条件,接着看时间是否相等,如果两个条件都满足,则闹铃。从前面的时间设置我们知道当前时间是20:30分,而上图我们设置的闹钟时间是20:35,所以时间还不相等,故不闹铃,当时间来到20:35的时候,系统将会闹铃。闹铃铃声有4种,如上图右侧图片所示,铃声由蜂鸣器产生,铃声1对应“滴”,铃声2对应“滴、滴”,铃声3和4依此类推。当闹钟时间到来的时候,产生闹铃,如图61.2.6.4所示:
图61.2.6.4 闹铃和语言设置 上图中,左侧的图片显示正在闹铃。此时会弹出一个闹钟的对话框,并显示当前时间,同时蜂鸣器发出“滴、滴、滴、滴”的闹铃声(铃声4)。按取消(或TPAD)可以关闭闹钟,按再响,则5分钟后(20:40)继续闹铃。右侧的图片为语言设置界面,系统支持3种语言设置,默认为简体中文,设置为繁体中文/English之后如图61.2.6.5所示:
图61.2.6.5 繁体中文和English 上图显示了繁体中文和English的设置,不过本章我们还是以简体中文为例进行介绍。下面,我们来看看数码相框设置和MP3播放模式设置,如图61.2.6.6所示:
图61.2.6.6 数码相框设置和MP3播放模式设置 前面提到数码相框支持全部循环播放和随机播放两种模式,就是通过上图左侧的界面设置的。而MP3的三个播放模式,则通过右侧的界面进行设置。接下来看看MP3音效设置和FM发射开关设置,如图61.2.6.7所示:
图61.2.6.7 MP3音效设置和FM发射开关设置 上图中,左侧的界面我们可以设置MP3播放的音效(VS1053的设置),包括音量、高低音以及空间效果等,大家可以根据自己喜欢设置,以上为默认设置。右侧的FM发射开关设置,用来设置是否开启FM发射,默认设置为开启,即只要不是收音机模式,其他所有界面FM发射都是开启的,这样我们就可以通过收音机来听到来自STM32开发板的声音了。
下面我们看看FM发射频率设置和FM收音设置,如图61.2.6.8所示:
图61.2.6.8 FM发射频率设置和FM收音设置 上图中,左侧的界面用于设置FM发射频率,用于设置FM发射频点,我们默认的频率是93.6Mhz,所以大家的收音机请调到93.6Mhz(默认频率),以接听来自开发板的声音。右侧的图片用于设置FM收音是否开启后台播放的功能。
接下来,我们看看背光设置和屏幕校准,如图61.2.6.9所示:
图61.2.6.9 背光设置和屏幕校准 上图中,左侧的界面用于设置LCD背光的亮度,默认我们是设置为最亮的,大家可以根据自己的喜欢设置背光亮度,背光亮度控制是通过PWM控制的。
右侧为触摸屏校准界面,这个校准界面和手机校准界面基本类似,校准的时候,请用触笔(或者其他尖一点的东西)依次点击4个十字圈的最中心(图中只是第一个,如果点击了第一个会自动弹出第二个,总共4个),在4个校准点都准确点击之后,系统提示校准成功字符串:Touch Screen Adjust OK!。如果校准失败,则提示失败信息,请重新校准,直到校准成功,如果多次校准都不成功,有可能你的触摸屏有问题了!
另外,在该界面下,如果连续10秒没有输入的话,系统会自动退出校准界面,当然,我们也可以按TPAD直接退出。
接下来,我们看看传感器校准和系统文件更新,如图61.2.6.10所示:
图61.2.6.10 传感器校准和系统文件更新提示 图中,左侧图片为传感器校准界面,这里的传感器设置ADXL345重力加速度传感器,校准的时候,请保持开发板水平并稳定,以得到最好的校准效果。
右侧的界面为系统文件更新提示界面,这里的系统文件是指SYSTEM文件夹里面的所有内容。战舰STM32开发板综合例程之所以可以没有SD卡也能正常运行,主要是将SYSTEM文件夹(注意这个不是源码里面的SYSTEM文件夹!!)拷贝到了FLASH Disk(即W25Q64)里面,这样,我们所有的系统资源都可以从W25Q64里面获得,从而正常启动。
SYSTEM文件夹目前是包含144个文件,总大小为2.6MB,包括137个图片/图标,另外包括5个字库相关文件以及2个VS1053的PATCH文件。这些文件一般不要修改,如果你想自己DIY的话,那可以修改这些文件,以达到你要的效果,不过建议修改之前备份一下,搞坏了还可以还原。
如果在图61.2.6.10的系统文件更新提示时选择确定,则会执行系统文件更新,将SD卡的SYSTEM文件夹,拷贝到FLASH Disk里面。这里有个前提,就是你的SD卡必须有这个SYSTEM文件夹!更新时界面如图61.2.6.11所示:
图61.2.6.11 系统文件更新和系统信息 上图中,左侧的界面显示了系统文件正在更新,该界面显示了当前更新的文件夹以及文件和进度等信息。右侧的界面为系统信息界面,通过该界面,可以看到软硬件的详细信息。
最后,我们来看看系统状态和关于界面,如图61.2.6.12所示:
图61.2.6.12 系统状态和关于界面 上图中,左侧的界面显示了当前系统资源状况,显示了当前CPU使用率,CPU温度以及内存使用率。图为后台正在播放MP3的时候资源使用情况,当播放高码率的歌曲的时候,CPU使用率会大增(如播放wav,则CPU使用率在60%左右)。
右侧的图片显示了战舰STM32开发板的软硬件版本以及产品序列号,这个序列号是全球唯一的,每个开发板都不一样。
战舰STM32开发板综合实验移植了NES模拟器,可以运行nes游戏,双击主界面的系统设置图标,进入文件浏览界面,如图61.2.7.1所示:
图61.2.7.1 文件浏览和小蜜蜂游戏 左侧为nes文件浏览界面,我们随便选择一个打开即可开始游戏了,记得插上手柄哦!右侧的图片为小蜜蜂游戏的界面,当然还可以玩很多其他经典游戏,如下面的图片所示:
图61.2.7.2 超级玛丽和90坦克
图61.2.7.3 超时空要塞和中国象棋
图61.2.7.4 马戏团和淘金者 这里,我们仅列出了几种游戏,这都是80后童年时玩的经典游戏,如今,在战舰STM32开发板上,大家可以回味一下当年的经典了。
不过,我们提供的nes模拟器,由于代码问题,对大于50KB的nes文件基本不支持,不过即使这样,还是有很多游戏可玩的。另外也没有加入声音输出。如果对nes模拟器有兴趣的朋友可以完善一下这两方面,我们在光盘提供了相关资料可供研究。
双击主界面的收音机图标,进入收音机界面,如图61.2.8.1所示:
图61.2.8.1 收音机主界面和模式选择界面 上图中,左侧图片为收音机的主界面,显示了当前频率、单/双声道、信号强度、音量、电台编号(自动搜台的时候自动保存)等信息,界面下方的5个按钮分别是:模式选择、频率减(或上一个电台)、暂停/继续收音、频率增(或下一个电台)和返回。右侧的图片为按了模式选择后弹出的界面,选择模式设置/频段选择并按确认后,得到如图61.2.8.2所示:
图61.2.8.2 模式设置和频段选择界面 上图中,左侧的图片为模式设置界面,总共有3个模式可以设置:手动搜台、半自动搜台和全自动搜台。
手动搜台:完全手动搜索,通过频率增/减两个按钮调节频率。
半自动搜台:此时频率增/减分别代表查找下一个/上一个电台,只要按一下按钮,收音机自动查找下一个/上一个电台,找到有效电台即停止搜索,并播放这个有效电台。
全自动搜台:选中之后,收音机从最小频率开始找台,一直搜索到最大频率,把整个过程中的有效电台记录下来,搜索完毕,可以从主界面的“CH:”看到总有效电台的个数,可以通过频率增/减按钮来跳转电台。
右侧的图片为频段选择界面,本收音机支持3个频段:日本频段(76Mhz~91Mhz)、欧美频段(87~108Mhz,也是中国电台使用的频段)、扩展频段(76Mhz~108Mhz)。默认设置为欧美频段。
收音机可以后台工作,只要您在系统设置里面开启了后台收音。如果没有开启后台收音,在按返回键之后,收音机将自动关闭。
本收音机使用起来还是比较简单,使用时,请把天线拉出,如果搜不到台,一般是因为你所处环境干扰太大,建议去空旷地方试试。
双击主界面的记事本图标,首先弹出模式选择对话框,如图61.2.9.1所示:
图61.2.9.1 模式选择和新建文本文件 记事本支持2种模式:1,新建文本文件,这种方式完全新建一个文本文件(以当前系统时间命名),用来输入信息。2,打开已有文件,这种方式可以对已有的文件进行编辑。
上图中,右侧的界面为我们选择新建文本文件后的界面,此时出现一个空白编辑区和一个闪烁的光标,我们通过下方的键盘输入信息即可,这个输入键盘和我们的手机键盘十分类似,输入方法也是一模一样,支持中文、字母、数字和手写识别输入等几种输入方式。中文输入和标点符号输入,如图61.2.9.2所示:
图61.2.9.2中文输入和标点符号输入 中文输入就是我们前面T9拼音输入法实验的具体运用。该键盘还支持英文输入和手写识别输入,如图61.2.9.3所示:
图61.2.9.3中文输入和标点符号输入 上图中,左侧的图片为英文输入界面,比较简单;右侧的图片为手写识别的输入界面,这里我们也是用到前面手写识别实验的知识实现的。
只要新建文本文件有被编辑过,那么在返回(按TPAD返回)的时候,系统会提示是否保存,如图61.2.9.4所示:
图61.2.9.4保存提示和编辑已有文件 上图中,左侧图片为提示保存界面,如果选择确定,该文件将被保存在SD卡根目录的TEXT文件夹里面。右侧图片为打开已有文件进行编辑的界面,这样我们就可以在战舰STM32开发板上编辑.txt/.h/.c/.lrc文件了。
双击主界面的运行器图标,首先进入文件浏览界面,如图61.2.10.1所示:
图61.2.10.1文件浏览和运行警告 上图中,左侧为文件浏览界面,图中显示了可运行的bin文件有41个,这些全部来自我们的标准例程。bin文件的生成办法,请参考串口IAP实验这个章节。本运行器支持60K字节以内的程序运行(FLASH+SRAM总共不超过60K),我们的例程有多达41个实验可以直接在运行器里面运行(生成.bin文件),我们提供了SRAM APP版本的例程,编译后直接生成.bin文件,拷贝到SD卡,即可运行查看实验现象。所有41个例程的.bin文件,我们已单独放到一个文件夹,供大家测试使用。通过运行器,大家可以直接运行我们大部分例程,而不用再去刷代码了,方便大家测试和验证我们的实验。
右侧的图片是运行前的警告界面,因为一旦执行.bin文件,我们的系统将无法恢复,只能靠复位重启。点击确定之后,STM32就开始运行你所选择的.bin文件了,实验现象和对应实验所描述的现象一模一样。之后,
双击主界面的3D图标,进入3D演示界面,如图61.2.11.1所示:
图61.2.11.1文件浏览和运行警告 左侧的图片为我们刚进入是的界面(假设板子是水平放置的),此时可以看到X/Y/Z三个方向的角度基本都是0,屏幕中心为一个立方体图形,该图形会随着角度的变化而变化。右侧的图片,显示了我们后我们把板子倾斜一定角度放置时的情况,可以看到X/Y/Z角度都发生了变化,而且立方体图形也产生了变化。
我们还可以通过触摸屏来控制立方体的转动,直接在屏幕滑动即可看到立方体随着我们的滑动而改变方向(视角)。
双击主界面的手写画笔图标,首先弹出模式选择对话框,如图61.2.12.1所示:
图61.2.12.1模式选择和新建画笔 上图中,左侧图片为我们双击手写画笔后,弹出的模式选择界面,我们可以选择新建画笔,建立一个新的文件;也可以选择打开一个已有的位图进行编辑。右侧的图片为我们新建画笔后输入的内容,默认画笔为最小尺寸,颜色为红色。画笔的颜色和尺寸是可以设置的,按WK_UP按键,则弹出画笔设置对话框,如图61.2.12.2所示:
图61.2.12.2画笔设置和画笔颜色设置 上图中,左侧的图片为按WK_UP按键后弹出的画笔设置对话框,我们可以选择对画笔颜色和画笔尺寸进行设置。右侧的图片为画笔颜色设置对话框,在该对话框里面,我们可以直接在颜色条快速输入要设置的颜色,也可以通过下方的三个滚动条进行精确设置,右侧的正方形区域为预览区。画笔尺寸设置界面如图61.2.12.3所示:
图61.2.12.3画笔尺寸设置和完成后的画图 上图中,左侧为画笔尺寸设置界面,我们可以通过滚动条设置画笔尺寸,对话框显示了画笔尺寸和对应的预览图。右侧的图片为我们完成的画图文件,在返回主界面(按TPAD)的时候,会提示保存,如图61.2.12.4所示:
图61.2.12.4保存画图和编辑已有位图 上图中,左侧为我们退出时弹出的提示保存对话框,如果选择确定,新的画图文件将会被保存在SD卡的PAINT文件夹里面,命名方式是以时间命名的,如PAINT20120907133223.bmp。
右侧的图片为对打开的位图进行编辑的界面,通过这个功能,我们可以在开发板上实现对一些相片(bmp格式)进行涂鸦。
双击主界面的照相机图标,首先初始化OV7670摄像头模块,如图61.2.13.1所示:
图61.2.13.1 初始化OV7670和等待拍照 在初始化OV7670之后,进入等待拍照模式,此时我们可以通过点击屏幕,弹出相机设置对话框,对摄像头的参数进行设置,如图61.2.13.2:
图61.2.13.2 相机设置和优先模式设置 在相机设置界面,我们可以对很多参数进行调节。右侧的图片为优先模式设置,支持速度优先和清晰度优先(通过降低帧率实现)两种模式,我们默认的是速度优先模式。
再来看看场景设置和特效设置,如图61.2.13.3所示:
图61.2.13.3 场景设置和特效设置 场景设置支持5种常用场景,特效设置支持6种特效(不含普通模式),我们可以根据自己的需要选择。
接下来看看亮度设置和色度设置,如图61.2.13.4所示:
图61.2.13.4 亮度设置和色度设置 亮度设置和色度设置各支持5个档位调节,我们可以根据自己的需要选择,默认都是0的。
最后,看看对比度设置和拍照实现,如图61.2.13.5所示:
图61.2.13.5 对比度设置和拍照 同样,对比度也支持5个档位设置,默认为0。在个参数设置好之后,我们按下WK_UP按键,就会执行拍照操作,在照片保存期间DS1亮,保存完后蜂鸣器发出“滴”的一声,提示拍照成功,同时弹出拍照成功对话框,如上图右侧图片所示。
从上图可以看出,照片文件的命名还是以当前时间为名字命名的。我们将所有的照片都保存在SD卡的PHOTO文件夹。如果你没有插入SD卡,拍照时会提示“创建文件失败,请检查SD卡!”的提示信息。
另外,如果你觉得照片模糊,可以手动调节摄像头模块的镜头,进行调焦,以达到最佳效果。
ALIENTEK 战舰STM32开发板综合实验带了录音机功能,可以实现通过MIC(咪头)录音,并将录音文件保存在SD卡。录音文件为WAV文件,格式为:单声道、16位、8Khz采样率,1秒钟需要的数据空间为16K字节,如果录音100秒钟,则需要1.6M左右的空间。
双击主界面的录音机图标,进入录音机主界面,如图61.2.14.1所示,该界面显示了当前录音时间以及信号电平等,在该界面有两个按钮:左边的按钮用于开始/暂停录音,右边的按钮用于停止录音,并保存当前录音文件。
录音机功能可以设置MIC(咪头,这里称之为麦克风)增益,通过点击做小脚的选项,系统将弹出麦克风增益设置对话框,增益设置范围为0~15,0代表自动增益,默认设置AGC为4,如图右侧图片所示。
图61.2.14.1 录音机主界面和麦克风增益设置 我们在录音机主界面点击录音按钮,则开始录音,如图61.2.14.2所示:
图61.2.14.2 录音进行中和提示保存 上图中,左侧的图片为正在录音的界面,此时我们可以按暂停/停止,按停止则自动保存当前录音文件,录音文件同样是以时间命名(见图中上方白字),所有录音文件都是被保存在RECORDER文件夹里面的。
在录音的时候,按下TPAD,会提示是否保存,如上图右侧图片所示,我们可以根据需要选择。
双击主界面的USB连接图标,如果开发板的USB端口没有连接电脑,则显示无连接,如图61.2.15.1所示:
图61.2.15.1 USB无连接和USB读数据 上图中,左侧的图片显示开发板没有和电脑连接上,此时,我们找一根USB线,连接开发板的USB端口和电脑的USB,注意P13端口必须设置为:PA11接D+,PA12接D-。此时,可以看到开发板提示USB已连接,并显示USB正在读数据,同时我们在电脑上面,可以看到右下角提示发现新硬件(如果是第一次连接的话),如图61.2.15.2所示:
图61.2.15.2 电脑发现新硬件 此时,我们打开我的电脑,即可找到2个可移动磁盘,分别为开发板的SD卡和FLASH Disk。
这样,我们就实现了开发板和电脑的USB连接,可以直接从电脑拷贝文件到开发板的SD卡或者FLASH Disk(即W25Q64)。
这里再次提醒大家,如非必要,不要往FLASH Disk写入数据!否则容易写坏SPI FLASH。
这是一个现在在智能手机非常流行的游戏,你说一句话,游戏里的猫也跟着说一句,而且是以怪怪的音调(变调)模仿,十分有意思。
双击主界面的TOM猫图标,进入如图61.2.16.1所示界面:
图61.2.16.1 TOM猫主界面和增益及语速设置界面 上图中,左侧图片为TOM猫游戏的主界面,图中显示了一个小猫和信号电平指示,此时我们可以对着MIC(咪头)说话,你说一句,就可以从耳机(插开发板的耳机接口)或者收音机(开启开发板的FM发射,并设置收音机的频率为开发板的FM发射频率)里面听到TOM猫在重复你的句子,而且是以变调重复的,听起来和手机的TOM猫游戏差不多。
我们的TOM猫游戏还加入了语速设置,点击左侧图片里的选项按钮,可以弹出增益及语速设置对话框,如右侧图片所示。在这个对话框里面,我们可以设置增益(AGC)和语速(SPEED),增益设置范围为0~10,建议设置在4左右为最佳。
语速设置范围为4000hz~16000hz,这里我们实现变调的原理很简单,就是人为改变wav文件的采样率,我们wav录音默认采样率为8Khz,而如果我们强制修改采样率为其他值,那么语调就肯定发生了变化,我们通过将采样率设置为不同的值得到不同的语调,如果设置为8Khz,就是正常语调了。默认我们设置语调为13000Hz,这个语调比较接近手机的TOM猫效果,大家可以修改为其他值,比如设置为4000Hz,听起来就像个老人的声音。
TOM猫就为大家介绍到这里。
该功能用来实现两个开发板之间的无线数据传输,在开发板A输入的内容,会在开发板B上完整的“复制”一份,该功能需要2个开发板(可以战舰板和Mini板[实验28]搭配用)和2个NRF24L01无线模块。
双击主界面的无线传书图标(假定开发板已插上NRF24L01无线模块),会先弹出模式选择对话框,如图61.2.17.1所示:
图61.2.17.1 模式选择和发送模式界面 从左侧的图片可以看出,模式设置,我们可以设置为发送模式或接收模式。右侧的图片则是选择发送模式后进入的界面。我们在另外一块开发板(开发板B)设置模式为接收模式,然后在本开发板(开发板A)手写输入一些内容,就可以看到在另外一个开发板也出现了同样的内容,如图61.2.17.2所示:
图61.2.17.2 在开发板A输入的内容完整的显示在开发板B上 从上图可以看出,在开发板A上输入的内容,被完整的复制到开发板B上了。这就是无线传书功能。
战舰STM32开发板实现了一个简单的科学计算器,可以计算加减乘除、开方、平方、M^N次方、正弦、余弦、正切、对数、倒数、格式转换等一些常见的计算器功能,精度为12位,支持科学计数法表示。双击主界面的计算器图标,进入计算器主界面,如图61.2.18.1所示:
图61.2.18.1 计算器主界面和加法计算 上图中,左侧的图片为科学计算器的主界面,和我们手机用的计算器基本一样,使用上非常简单,我们就不详细介绍了。右侧的图片为加法计算,支持累加功能。
图61.2.18.2 计算器主界面和加法计算 上图为乘法计算和倒数计算,可以看到,结果是以科学计数法表示的,最大支持200位指数表示,超过范围直接显示错误(E)。
该计算器还支持格式转换(按FMT键),可以将十进制数据(最大为65535,超过部分将被丢弃)转换为16进制/二进制数据表示,如图61.2.18.3所示:
图61.2.18.3 格式转换 上图显示我们将十进制的65535转换为16进制/二进制后的表示。计算器的其他功能,我们就再列举了,感兴趣的朋友可以慢慢摸索,当然也可以在这个基础上进行改进。通过按TPAD可以返回主界面。
至此,整个战舰STM32开发板的综合测试实验就介绍完了。这就是我们开发了近两年的东西,其中借鉴了很多网友的代码,在此,对这些网友表示衷心的感谢,同时我也希望我们的这个代码,可以让大家有所受益,能开发出更强更好的产品,如此,我们的努力也就没有白费。
综合实验整个代码编译后大小为275K左右,代码量是很大的,希望大家慢慢理解,各个攻破,最后祝大家身体健康、学习进步!
正点原子
2012-12-3
于广州