0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【RTT大赛作品连载】AB32VG1评估板 炫酷音乐播放器

磐石90 来源:磐石90 作者:磐石90 2021-11-26 08:43 次阅读

之前,记录了从新建项目到点灯,按钮控制彩灯测试,再到如何AB32VG1评估板实现音乐播放器!今天通过对前边的经验提炼!实现炫酷音乐播放器!!!

硬件如图:

image.png

因用到彩灯需短接J8,J10,J12,TF卡需短接P2的对应pin!

应用RT-Thread Studio IDE,可快速实现对组件包的配置!

image.png

软件实现

led 彩灯的线程如下:

static void led_thread_entry(void* p)
{
uint32_t cnt = 0;
uint8_t pin = rt_pin_get("PE.1");
rt_pin_mode(pin, PIN_MODE_OUTPUT);
uint8_t pin1 = rt_pin_get("PE.4");
rt_pin_mode(pin1, PIN_MODE_OUTPUT);
uint8_t pin2 = rt_pin_get("PA.1");
rt_pin_mode(pin2, PIN_MODE_OUTPUT);

while (1)
{ rt_err_t result = rt_mutex_take(mutex1, 6);
if (result == RT_EOK) {
state = wavplayer_state_get();
rt_mutex_release(mutex1);
if (state== PLAYER_STATE_PLAYING) {
if (cnt % 8 == 0)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 1)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 2)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 3)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_HIGH);
}
if (cnt % 8 == 4)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 5)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 6)
{
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_LOW);
rt_pin_write(pin2, PIN_LOW);
}
if (cnt % 8 == 7)
{
rt_pin_write(pin, PIN_HIGH);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_HIGH);
}
cnt++;
}else if (state== PLAYER_STATE_PAUSED) {
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_HIGH);
rt_thread_mdelay(400);
rt_pin_write(pin, PIN_LOW);
rt_pin_write(pin1, PIN_HIGH);
rt_pin_write(pin2, PIN_LOW);
rt_thread_mdelay(200);
}
else {
rt_pin_write(pin, PIN_LOW);
rt_thread_mdelay(500);
rt_pin_write(pin, PIN_HIGH);
rt_thread_mdelay(500);
}
rt_thread_mdelay(200);
}

}

}
音乐播放控制用到了两个线程。一个通过按钮事件线程控制音乐播放!一个通过音乐播放状态来检测是否切换歌曲,避免播放一首之后,因无按钮操作而停止!

按钮事件线程:

static void btn_thread_entry(void* p)
{
while (1)
{
rt_thread_delay(RT_TICK_PER_SECOND / 500);
rt_err_t result = rt_mutex_take(mutex1, 6);
if (result == RT_EOK) {
button_ticks();
rt_mutex_release(mutex1);
}
}
}

音乐播放状态来检测线程:

static void endCheck_thread_entry(void* p)
{
while (1)
{
rt_thread_mdelay(2500);
rt_err_t result = rt_mutex_take(mutex1, 2);
if (result == RT_EOK) {
state = wavplayer_state_get();
rt_mutex_release(mutex1);
if (state == PLAYER_STATE_STOPED) {
EndState = 0;
rt_thread_mdelay(1000);
result = rt_mutex_take(mutex1, 2);
if (result == RT_EOK) {
state = wavplayer_state_get();
if ((state == PLAYER_STATE_STOPED)&& (EndState == 0)) {
EndState = 1;
if (currentSong == NUM_OF_SONGS) {
currentSong = 0;
}
GetCurrentPath();
wavplayer_play(table);
currentSong++;
}
rt_mutex_release(mutex1);}
}

}
}
}
通过以上主要的线程,在加上前面的【RTT大赛作品连载】AB32VG1评估板到货控制彩灯测试-电子发烧友网 (elecfans.com)的部分代码即可实现炫酷音乐播放器!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RTOS
    +关注

    关注

    20

    文章

    773

    浏览量

    118773
  • 开发板
    +关注

    关注

    25

    文章

    4403

    浏览量

    93784
  • 代码
    +关注

    关注

    30

    文章

    4553

    浏览量

    66664
  • RT-Thread
    +关注

    关注

    31

    文章

    1148

    浏览量

    38857
  • 中科蓝讯
    +关注

    关注

    8

    文章

    49

    浏览量

    9625
收藏 人收藏

    评论

    相关推荐

    RTT大赛作品连载AB32VG1开箱、搭建环境、演示、点灯

    AB32VG1】开箱、搭建环境、演示、点灯,为下面做好准备。
    的头像 发表于 10-25 16:47 4647次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】<b class='flag-5'>AB32VG1</b>开箱、搭建环境、演示、点灯

    RTT大赛作品连载AB32VG1上手

    AB32VG1上手操作,修改例程运行中的问题,成功点亮RGB。
    的头像 发表于 10-28 18:31 7296次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】 <b class='flag-5'>AB32VG1</b>上手

    RTT大赛作品连载AB32VG1评估板到货点灯测试

    AB32VG1评估板到货点灯测试.
    的头像 发表于 11-04 08:55 7429次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】<b class='flag-5'>AB32VG1</b><b class='flag-5'>评估</b>板到货点灯测试

    RTT大赛作品AB32VG1开发板—按键扫描

    ab32vg1开发板按键实验
    的头像 发表于 11-15 09:54 3846次阅读
    <b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b>:<b class='flag-5'>AB32VG1</b>开发板—按键扫描

    RTT大赛作品连载AB32VG1评估板到货控制彩灯测试

    RTT大赛作品连载AB32VG1评估板到货控制彩灯测试篇;接下来看看在如何
    的头像 发表于 11-07 19:39 4833次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】<b class='flag-5'>AB32VG1</b><b class='flag-5'>评估</b>板到货控制彩灯测试

    RTT大赛作品连载AB32VG1评估音乐播放器

    RTT大赛作品连载AB32VG1评估音乐
    的头像 发表于 11-12 21:11 5870次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】<b class='flag-5'>AB32VG1</b><b class='flag-5'>评估</b>板 <b class='flag-5'>音乐</b><b class='flag-5'>播放器</b>

    RTT大赛作品连载】中科蓝讯AB32VG1开发板开箱篇

    介绍电路原理图分析接口说明,AB32VG1开发板是以中科蓝讯(Bluetrum)公司推出的基于RISC-V架构的高配置芯片AB5301A为核心所组成的。【RTT大赛
    的头像 发表于 11-13 10:01 9677次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】中科蓝讯<b class='flag-5'>AB32VG1</b>开发板开箱篇

    RTT大赛作品连载AB32VG1的开发环境搭建

    基于RT-Thread的AB32VG1开发环境搭建.
    的头像 发表于 11-17 08:48 8899次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】<b class='flag-5'>AB32VG1</b>的开发环境搭建

    RTT大赛作品连载AB32VG1开发板之开箱篇

    中科蓝讯AB32VG1开发板的开箱之作,此开发板的硬件资源初略的介绍。
    的头像 发表于 01-04 09:19 4218次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】<b class='flag-5'>AB32VG1</b>开发板之开箱篇

    【RT-Thread设计大赛】基于AB32VG1的嵌入式网盘

    【RT-Thread设计大赛】基于AB32VG1的嵌入式移动网盘
    的头像 发表于 07-30 12:12 1921次阅读
    【RT-Thread设计<b class='flag-5'>大赛</b>】基于<b class='flag-5'>AB32VG1</b>的嵌入式网盘

    【文章连载】RT-Thread创新应用大赛文章汇总

    作品连载AB32VG1评估到货点灯测试专栏作者:辛书伟 【RT-Thread创新应用设计大赛
    发表于 10-11 15:13

    RTT大赛作品连载】中科蓝讯AB32VG1开发开箱篇

    收到开发先上靓照中科蓝讯AB32VG1开发开箱AB32VG1开发一块TypeCo数据线一条开发
    发表于 11-24 08:00

    RTT大赛作品连载AB32VG1的开发环境搭建

    Projets选择“基于开发”,初次使用是没用安装"RISC-V,AB32VG1"SDK支持包,选择“添加更多(这里与SDK 管理中安装是一样的,如果上步没做的话)”。这时会提示
    发表于 11-25 08:00

    作品集】RT-Thread创新应用设计大赛获奖作品展示

    的,方便用户使用。三等奖作品1:一个桌面智能坞小工具项目简介:很荣幸能申请到AB32VG1开发参加这次RTT的创新
    发表于 02-17 18:35

    RTT大赛作品连载】基于AB32VG1 sdk BLE例程

    RT-Thread基本中科蓝讯AB32VG1 BLE开发快捷方便.
    的头像 发表于 12-06 09:07 4412次阅读
    【<b class='flag-5'>RTT</b><b class='flag-5'>大赛</b><b class='flag-5'>作品</b><b class='flag-5'>连载</b>】基于<b class='flag-5'>AB32VG1</b> sdk BLE例程