完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
基于STM32的音乐播放器
哔哩哔哩视频链接:https://www.bilibili.com/video/BV1cp4y1678G/ 资料链接:https://download.csdn.net/download/mbs520/13711787 百度网盘链接:https://pan.baidu.com/s/1G-Q1CA1Px8RSZJtTYjmELw 提取码:abcd 取走记得点赞 一、项目要求: 硬件驱动+软件工具类项目 项目需要的技术:
①能够通过SD卡驱动嵌入文件系统实现对SD卡目录的扫描获取音乐文件(.mp3 .wav等) ②驱动WM8978声卡芯片 使用IIS实现对SD卡读取的音频数据后的向声卡传输 并控制声卡播放音乐 ③能够自己在mcu屏中显示MP3播放器相关信息 歌曲名。。。。 可以使用字库显示相关中文 二、材料准备 1、STM32F4开发板一块(需要音频接口支持)(我用的GEC M4) (注意要买能插LCD屏的、最好有板载wm8978,没有的话可以外接音频驱动模块) 作用:主控芯片、处理各种数据 或者: + 2、800*480 4.3寸电容触摸LCD屏(我用的正点原子的屏) (注意不兼容其他分辨率的屏) 作用:显示与触摸控制 3、一张32G以下的SD卡和一个读卡器 作用:存储mp3、wav 文件、图片文件等必要文件 二、硬件连接 1、把屏幕插到开发板上即可 三、下载调试 1、下载好相关资料 2、下载源代码到单片机 3、将SD卡根目录文件拷贝到SD卡根目录下 4、上电启动系统,供电要足,不然屏幕半亮、声卡驱动异常。 能正常显示图片、按钮控件即移植成功。 四、相关知识点 (一)、FATFS文件系统(就是个用来读写SD卡文件的) 1、FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完 全用标准 C 语言编写,所以具有良好的硬件平***立性,可以移植到 8051、PIC、AVR、SH、 Z80、H8、ARM 等系列单片机上而只需做简单的修改。它支持 FATl2、FATl6 和 FAT32,支持多个存储媒介; 2、为什么需要文件系统? 因为SD卡只是一种存储器,普通的读写操作只能是针对地址进行读取,读取出来的数据都是一些字符数据,并没有文件的概念,加入了文件系统的SD卡可以利用FATFS文件系统进行管理,比如说要存储一张图片只需要以文件的形式存储,而普通的读写只能是把图片数据一个字节一个字节地存到一块指定内存中,读取也要严格根据地址位置读取 3、正点原子提供了比较好用的FATFS源码可以直接移植使用 代码文件可以到正点原子官网下载 下面是主要API函数: 进行对文件的读取、写入等一系列操作,与C语言文件IO差不多相似,看文件名应该知道大概的用途 (二)、MP3播放 下次再写,困了~o~ (三)、图片显示 下次再写,困了~o~ (四)、GUI界面 下次再写,困了~o~ 五、程序展示 展示部分关键代码: #include "stm32f4xx.h" /* 开始任务 */ //任务优先级 #define START_TASK_PRIO 3 //任务堆栈大小 #define START_STK_SIZE 128 //任务控制块 OS_TCB StartTaskTCB; //任务堆栈 CPU_STK START_TASK_STK[START_STK_SIZE]; //任务函数 void start_task(void *p_arg); /* 主任务 */ //任务优先级 #define MAIN_TASK_PRIO 6 //任务堆栈大小 #define MAIN_STK_SIZE 512 //任务控制块 OS_TCB MainTaskTCB; //任务堆栈 CPU_STK MAIN_TASK_STK[MAIN_STK_SIZE]; //任务函数 void main_task(void *p_arg); //系统初始化 void sys_init(void) { u8 key; uart_init(115200); //串口初始化 LED_Init(); //LED初始化 KEY_Init(); LCD_Init(); //LCD初始化 FSMC_SRAM_Init(); //SRAM tp_dev.init(); //触摸初始化 W25QXX_Init(); //初始化W25Q128 gui_init(); //gui初始化 my_mem_init(SRAMIN); //初始化内部内存池 my_mem_init(SRAMEX); //初始化外部内存池 my_mem_init(SRAMCCM); //初始化CCM内存池 exfuns_init(); //为fatfs相关变量申请内存 f_mount(fs[0],"0:",1); //挂载SD卡 f_mount(fs[1],"1:",1); //挂载FLASH. piclib_init(); //初始化画图 while(font_init()) ; //检查字库 while(WM8978_Init());//检查音频芯片是否正常 } int main(void) { OS_ERR err; CPU_SR_ALLOC(); delay_init(168); //时钟初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断分组配置 sys_init(); //系统初始化 delay_ms(150); LCD_Clear(GRAY);//清屏 OSInit(&err); //初始化UCOSIII OS_CRITICAL_ENTER();//进入临界区 //创建开始任务 OSTaskCreate((OS_TCB * )&StartTaskTCB, //任务控制块 (CPU_CHAR * )"start task", //任务名字 (OS_TASK_PTR )start_task, //任务函数 (void * )0, //传递给任务函数的参数 (OS_PRIO )START_TASK_PRIO, //任务优先级 (CPU_STK * )&START_TASK_STK[0], //任务堆栈基地址 (CPU_STK_SIZE)START_STK_SIZE/10, //任务堆栈深度限位 (CPU_STK_SIZE)START_STK_SIZE, //任务堆栈大小 (OS_MSG_QTY )0, //任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息 (OS_TICK )0, //当使能时间片轮转时的时间片长度,为0时为默认长度, (void * )0, //用户补充的存储区 (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任务选项 (OS_ERR * )&err); //存放该函数错误时的返回值 OS_CRITICAL_EXIT(); //退出临界区 OSStart(&err); //开启UCOSIII while(1); } //主任务 void main_task(void *pdata) { while(1) { audio_play();//音乐播放器 LCD_Clear(WHITE); delay_ms(1000); } } 化作尘其它开源项目: 单片机项目: 基于stm32c8t6的坡道行驶巡线小车(2020年TI杯大学生电子设计竞赛 C题)https://blog.csdn.net/mbs520/article/details/115438122 基于STM32F4的音乐播放器 https://blog.csdn.net/mbs520/article/details/111313042 基于STM32F4的电子阅读器(首创) https://blog.csdn.net/mbs520/article/details/110817173 基于51单片机WiFi视频小车(首创) https://blog.csdn.net/mbs520/article/details/109843972 基于51单片机蓝牙小车 https://blog.csdn.net/mbs520/article/details/109775964 基于MSP430 坡道行驶电动小车(2020年TI杯大学生电子设计竞赛 C题) https://blog.csdn.net/mbs520/article/details/109090072 基于stm32f4的智能门锁系统 https://blog.csdn.net/mbs520/article/details/106987758 基于51单片机超声波测距小车 https://blog.csdn.net/mbs520/article/details/106599219 基于51单片机定时宠物喂食系统 https://blog.csdn.net/mbs520/article/details/108292187 Linux项目: 基于QT5 Linux平台 停车场管理系统 https://blog.csdn.net/mbs520/article/details/113481824 基于QT5 Linux平台 车载系统 https://blog.csdn.net/mbs520/article/details/112873809 基于Linux系统 媒体播放器 https://blog.csdn.net/mbs520/article/details/107880118 基于Linux系统 语音识别、人机对话 https://blog.csdn.net/mbs520/article/details/113179224 基于Linux系统小钢琴程序(暂无博客) https://download.csdn.net/download/mbs520/12798287 基于Linux系统 QQ通讯录管理系统(暂无博客) |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
329浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:27 , Processed in 1.102565 second(s), Total 47, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号