版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EAST CHINA INSTITUTE OF TECHNOLOGY通信工程课外实践报告学院信息工程学院专业通信工程班级1321301学号201320130101姓名肖庭林指导教师饶志华老师智能WIFI音频播放器软件设计摘要整个软件系统由两个部分组成,pc机部分和单片机端,单片机端利用串口 实现了一个简单的Shell用户交互系统,用户可以利用超级终端向单片机发送指 令,比如监听端口,播放歌曲等命令,用户Shell本身作为一个用户线程运行在 FreeRTOS中,此线程阻塞在串口接收,当用户键入命令后首先线程会解析本条 指令,如果是合法的指令则会立即执行,对于“ WIFI音频播放器”实例来说, 一
2、般应先发送“ listenport ”指令启动指定端口的监听,当 PC机连接到本地端 口后,再发送“playmusic”指令,此时单片机会通知PC机发送音频流,单片机 将收到的音频流通过SPI总线发送至VS1003解码芯片中。PC机端会主动连接指 定端口,当连接上后,等待“ playmusic ”指令,收到播放指令后随即开始音频 数据的发送。关键字:WIFI; SPI总线;音频播放器;GetCmdString函数单片机端用户Shell设计Shell命令包括两个部分,一是命令名,二是命令参数。命令名是必有的输 入,命令参数可选,设计了一种数据结构包括命令名和处理此命令的函数指针, 如下:type
3、def BOOL(*USER_CMD_HANDLER)( void *parameter );/* 命令的函数类型定 义*/typedef struct _cmd_parse(命令名*/*执行命令的函数指针*/Handlesigned char cmd_name10; /* USER_CMD_HANDLER cmd_handler;)CMDPARSE;CMDPARSE cmdstruct = /*函数*/ scannow,ScanNowHandler), playmusic,PlayMusicHandler),listenport,ListenPortHandler);GetCmdString
4、 阻塞等待一条命令字串CmdResolve 命令解析 返回命令索引和参数CmdParse 命令执行 调用Handle函数指针指令1Listenport指令2Playmusic指令n图7.4 Shell软件流程图线程一般会阻塞在GetCmdString函数中,此函数会等待获取一条新的指令。当线程获得一条指令后,执行 CmdResolve函数,该函数会比对输入的命令和 cmdstruct命令数组中的预设命令进行比对,并获得输入命令的index(未识别的 命令会返回0 xff) 。 CmdParse函数会根据命令index在cmdstruct数组中调用 handle函数指针。Playmusic 指令
5、handle函数设计Playmusic实现了音乐播放的全部功能,功能如下:1.指定歌曲名的播放2. 播放时的暂停3.停止播放4.音量调节5.播放曲目的切换6.简单的文本 界面播放函数实现了一个简单的状态机:typedef enum _play_state STATE_OPEN,/*文件打开状态,向PC端发送要打开的文件名*/STATE_PLAYING, /*文件播放状态,接收音频流并播放,同时检测有无用户交互*/STATE_HALT,/*暂停播放状态,暂停音频流接收,检测用户是否重新启动播放*/STATE_STOP /*播放停止状态,播放停止后立即结束playmusic函数*/PLAY_STA
6、TE;播放handle整体状态如图1.5所示单片机和PC机TCP接成功后,单片机端和PC端随即采用规定的通信格式 进行通信,通信格式如下:typedef struct _attribute_ (packed) net_frame WORD type;WORD length;NET_FRAME,*pNET_FRAME;以上是通信数据的帧头,也就是说每一帧的前4个字节的数据反映了该帧的 基本情况,type有两种取值,一种是cmd,一种是data , cmd反映此帧为一命令帧, data反映此帧为一数据帧,len反映帧中实际的数据长度,取值最小值为 0SlayMusicHandler弟数:播放歌曲名
7、初始化STATE_OPENReceive图1.5 handle 状态图PC机端网络程序1.6PC机主动连接单片机端,被动的接收来自单片机端的命令并执行,如图连接单片机Has connected图1.6 PC机命令解析PC机连接上单片机后,等待一个网络帧的到达,当收到网络帧后,解析帧命令,这里只实现了一个帧命令,也就是 playmusic帧命令,playmusic函数同样维护一个播放状态机。状态转换图1.7图1.7 PC端播放状态测试结果如下图1.8为在PC端运行测试图叵 /cygdrive/?/Busicok we got isic_nane mis irmsic_nane ni.isic_n
8、ame rvus tc jam。 inLtsic_naiiTie ni.isic_naiTie nus icn&ne nmsicjame isic_nane niis miLisic_nane ni.isic_nflme nitsimLtsic_nanTie ni.isic_naiTie nus icn&rie imLtsic_riame isic_naneend openfile? ?S帆.世说心语mp3-由你写诗.m3:尘世荚.mp3:山喑花.mp3工养前颖王力宏-另一个天堂,的:我脚殳有在一起.mp3:日本网关制作山楂花,呻3:曝第2:暮羌之城3片尾,mp3二-二有如果可p3=l 二二王
9、力宏-绝弦.用3 .mp3 自己.mp3:王力奎-耋甫里还:3J :王力宏-需要人陪.mp3 =笔定-周笔诙叫3洗过的太阳.mp3 标上=_1素颜-mM:霹鬻-我想牵着你的手.mp3:那么骄傲.mp3口k wiB will open a f ileif tthe Filename is nonethe current flie is :1世说心语. mp3the current filenum Is uk we uirite the length:,图1.8 PC端测试部分源程序:FreeRTOS主程序:#include #include #include GenericTypeDefs.h#
10、include HardwareProfile.h #include FreeRTOS.h#include task.h#include queue.h#include semphr.h#include FreeRTOSConfig.h #include uart2.h#include usbtask.h#include wifitask.h#include usb_config.h#include USB/usb.h#include user.h#include rt73usb_driver.h#include rt73debug.h#include usertask.h#include w
11、ifitask.h#include user_config.h#include arch/LwIPEntry.h static BOOL InitializeSystem ( void );static portTASK_FUNCTION( vLED1task, pvParameters );*/*#pragma config UPLLEN = ON#pragma config FPLLMUL = MUL_20#pragma config UPLLIDIV = DIV_2#pragma config FPLLIDIV = DIV_2#pragma config FPLLODIV = DIV_1
12、#pragma config FPBDIV = DIV_2#pragma config FWDTEN = OFF#pragma config WDTPS = PS1#pragma config FCKSM = CSDCMD Clock Monitor#pragma config OSCIOFNC = OFF#pragma config POSCMOD = XT#pragma config IESO = ON#pragma config FSOSCEN = OFF (KLO was off)#pragma config FNOSC = PRIPLL#pragma config CP= OFF#p
13、ragma config BWP= OFF#pragma config PWP= OFF#pragma config ICESEL= ICS_PGx2/ USB PLL Enabled/ PLL Multiplier/ USB PLL Input Divider/ PLL Input Divider/ PLL Output Divider/ Peripheral Clock divisor/ Watchdog Timer/ Watchdog Timer Postscale/ Clock Switching & Fail Safe/ CLKO Enable/ Primary Oscillator
14、/ Internal/External Switch-over/ Secondary Oscillator Enable/ Oscillator Selection/ Code Protect/ Boot Flash Write Protect/ Program Flash Write Protect/ ICE/ICD Comm Channel SelectRT73_DEVICE RT73Device; char dbg_buffer100;extern void vAltStartUSBRxTasks( unsigned portBASE_TYPE uxPriority );static B
15、OOL InitializeSystem ( void )/* Set the system and peripheral bus speeds and enable the program cache*/DDPCONbits.JTAGEN = 0;/ 禁止 JTAG 口SYSTEMConfigPerformance( configCPU_CLOCK_HZ - 1 ); mOSCSetPBDIV( OSC_PB_DIV_2 );/* Setup to use the external interrupt controller. */ INTEnableSystemMultiVectoredIn
16、t();/* LED初始化*/mInitAllLEDs();UART2Init();/*初始化SPI */Vs1003_Init();/* USB诂制引脚初始化*/LATDCLR = 0X0100;ODCD = 0X0100;TRISDCLR = 0X0100;return TRUE; / InitializeSystemint main( void )(InitializeSystem();/* 仓ij建 USB-HOST 任务 */*这些任务在系统初始化时进行创建,为的是防止重复创建任务 */*基本上每个task中都利用了状态机*/vAltStartUSBTasks( USBHOST_TH
17、READ_PRIO );vAltStartLwipTasks( TCPIP_THREAD_PRIO );/*创建用户命令解析任务*/vAltStartComTestTasks( UART_THREAD_PRIO );/*创建一个led任务,当RT73a初始化后,led闪烁,当rt73初始化后led 常亮*/xTaskCreate( vLED1task, ( signed char *) LED1task,configMINIMAL_STACK_SIZE, NULL, LED1_THREAD_PRIO , ( xTaskHandle * ) NULL );/* Finally start the
18、 scheduler. */vTaskStartScheduler();return 0;/* LED1 任务 */static portTASK_FUNCTION( vLED1task, pvParameters )(void ) pvParameters;while(1)(/* 1s闪烁一次*/mLED_1_Toggle();vTaskDelay(1000/portTICK_RATE_MS);mLED_1_On();vTaskDelete( NULL );void vApplicationStackOverflowHook( void )(/* Look at pxCurrentTCB to see which task overflowed its stack. */ DBG_OUT(The heap is overflow!rn);for( ; );心得结论实践目标是实现利用PIC单片机驱动无线网卡进行 WIFI联网控制,实践的 创新性在于对802.11协议栈的裁剪使之适应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械式除尘器课程设计
- 校园食堂饮品销售方案
- 机械工业产品课程设计
- 中国低空经济政策环境与监管趋势分析
- 机械原理切割机课程设计
- 机械原理与维修课程设计
- 低空经济的智能化发展与技术突破
- 二年级道德与法治下册 第二单元 我们好好玩 第6课《传统游戏我会玩》教案2 新人教版
- 城市更新多元化路径实施策略与模型解析
- 机械ug课程设计
- 上海市普陀区2024-2025学年六年级(五四学制)上学期期中语文试题
- 24秋国家开放大学《当代中国政治制度》形考任务1-4参考答案
- 小学学校信息化管理章程
- 封条模板A4直接打印版
- 工程地质学—地貌
- 应聘登记表(CMHR
- 《海报设计》PPT课件(完整版)
- 制浆洗漂详细过程工艺
- 吉林省义务教育阶段新课程计划表(新)
- 大学的学习方法PowerPoint 演示文稿
- 混凝土拦挡坝的施工方案
评论
0/150
提交评论