当前位置: 首页 > news >正文

一个jsp做的购物小网站诚信档案建设网站首页

一个jsp做的购物小网站,诚信档案建设网站首页,wordpress作者最新评论,搜索引擎优化原理闲来无事,折腾通过USBHOST 把本地的MP3 音频文件 发送给USB 音频设备 播放音乐。1. 先把USB HOST 做成个USB U盘 通过MSC FATFS 往本地SD_NAND先存放音频文件,2.再把USB HOST 驱动成 audio ,移植 软解码MP3HEX库。3.移植USB HOST audio 相关驱动库&#…

闲来无事,折腾通过USBHOST 把本地的MP3 音频文件 发送给USB 音频设备 播放音乐。

1. 先把USB HOST 做成个USB U盘 通过MSC FATFS 往本地SD_NAND先存放音频文件,

2.再把USB HOST 驱动成 audio ,移植 软解码MP3HEX库。

3.移植USB HOST audio 相关驱动库,通过usbh_audio.c 分析整份代码过于繁琐,只需要保留枚举那部分代码即可,驱动操作可以自己封装相关的函数,4

typedef struct {uint8_t buff[AUDIT_SZIE+4];int32_t out_ptr;uint32_t in_ptr;
}Audio_BufferTypeDef;/* Private variables ---------------------------------------------------------*/
//static WAV_InfoTypedef WavInfo;
//static FIL WavFile;static Audio_BufferTypeDef  BufferCtl;
static u32 pRdBufSize,halfSize;void AUDIO_Process(void)
{int32_t diff;USBH_StatusTypeDef Status = USBH_FAIL;switch(audio_state){case 0://if(Status ==USBH_OK)TRACE("sent cur:%d\n",10);//	_HSetAur(&hUsbHostFS,10);//	_HSetAur(&hUsbHostFS,5);_HSetAur(&hUsbHostFS,5);_HSetMirSpeak(&hUsbHostFS,0,1);//	Mp3Reset();audio_state =1;break;case 1:Status = 	USBH_AUDIO_Play(&hUsbHostFS, &BufferCtl.buff[0],halfSize * GetMp3TotalFram(),48000,16,1);if(Status ==USBH_OK){audio_state ++;}break;case 2 :if((BufferCtl.out_ptr = USBH_AUDIO_GetOutOffset(&hUsbHostFS)) < 0) /* End of file */{    //audio_state ++;TRACE("sent all:%d\n",total);}else if(BufferCtl.out_ptr  >= pRdBufSize ) /* End of buffer  4608 */{//	TRACE("S:%d\n",BufferCtl.out_ptr);USBH_AUDIO_ChangeOutBuffer(&hUsbHostFS, &BufferCtl.buff[0]);}else    {diff = BufferCtl.out_ptr - BufferCtl.in_ptr;if(diff < 0){diff = pRdBufSize + diff;}if(diff >=  pRdBufSize /2 )//9216{BufferCtl.in_ptr += halfSize;if(BufferCtl.in_ptr >= pRdBufSize)//(AUDIO_BLOCK_SIZE * AUDIO_BLOCK_NBR)){BufferCtl.in_ptr = 0;}if(!CheckMP3Over()){//	TRACE("in:%d\n",BufferCtl.in_ptr);halfSize =  GetMP3Fram(&BufferCtl.buff[BufferCtl.in_ptr],1);}elseaudio_state = 3;}MP3ShowTimes();}break;case 3:Status =  USBH_AUDIO_Stop(&hUsbHostFS);if(Status ==USBH_OK)audio_state ++;TRACE("err exit:%d\n",BufferCtl.in_ptr);break;default:break;}}void MX_USB_HOST_Process(void)
{int tx = 0;/* USB Host Background task */USBH_Process(&hUsbHostFS);if(  Appli_state == APPLICATION_READY){AUDIO_Process();//AUDIO_Micr_Process();}if(!connected){TIM2->CNT = 0;TIM2->CR1|=0x01;    //使能定时器2pRdBufSize =  GetMP3Fram(&BufferCtl.buff[0],4);//AUDIO_BLOCK_SIZE * AUDIO_BLOCK_NBR);TIM2->CR1&=~0x01;    //使能定时器2TRACE("mp3_run_us:%d\n",TIM2->CNT);BufferCtl.out_ptr = BufferCtl.in_ptr = 0;halfSize = pRdBufSize /4;TRACE("get byte:%d,%d\n",pRdBufSize,halfSize);connected = 1;}}

4.整个处理流程只需保留几个相关操作API,开始播放和停止播放,设置音量大小,因为usb 音频设备是单声道,对MP3解码的双通道 做 /2 处理

http://www.dtcms.com/a/492670.html

相关文章:

  • 做个人网站到哪里做中企动力销售好做吗
  • 一个网站做三个关键词wordpress左侧菜单
  • 物业管理 网站开发代做财务报表分析网站
  • 阳狮做网站网络软文怎么写
  • 配置资源管理
  • 北京便宜网站建设应用商店下载2022最新版
  • 响应式网站哪里做应届生去外包公司
  • 成都专业网站制作网站wordpress飘花特效
  • Java 中 equals 与 hashCode 的关系
  • 如何把网站的文字编辑网页设计与制作课程思政教案
  • WordPress网站封装app教程梨树县交通建设网站
  • 上海网站建设公司网可以兼职做设计的网站
  • 手机网站要域名吗网站建设与网页设计可行性分析报告
  • 怎么做网站教程简单做外国的网站卖东西
  • Kubernetes Pod控制器与配置资源管理
  • 农机网站模版wordpress建站好么
  • 【NestJS】NestJS三件套:校验、转换与文档生成,对比Django DRF
  • 长沙做网站的故事哈尔滨网站建设方案策划
  • 赣州建设公司网站新营销平台电商网站
  • 上海网站建设机构上海网页优化公司
  • 平潭综合实验区建设局网站软件开发前景分析
  • 企业网站建设需要费用公司做网站怎么样
  • SAP MM物料主数据变更接口分享
  • 美术培训学校网站模板万州房产网站建设
  • 安徽公共资源交易中心招标网谷歌搜索广告优化
  • 北京网站建设技术部html编辑器在哪里设置
  • 昆明做个人网站做logo好的网站
  • k8s 持久化存储方案-PVC
  • 【雅思播客024】Investing in Emerging Markets
  • 江阴建设局网站招考查派网站建设