日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【RTT設(shè)計大賽】音樂播放器設(shè)計完成

RT_THREAD ? 2021-11-30 15:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

無意中看大官方一個demo,關(guān)于audio功能的設(shè)計,現(xiàn)在學(xué)習(xí)一下。
從內(nèi)部Flash讀取WAV音頻播放
主要的工作是安裝播放器,通過按鍵控制播放和停止。

1.使能相關(guān)組件
需要使用到 Audio 和 dfs 相關(guān)的組件

poYBAGGlsHiARX7zAABgA-MjRW0971.pngpYYBAGGlsIqAIH6vAAAjkTyQ7T8342.png

開啟 dfs 的時候會默認(rèn)開啟 posix 的使能,需要關(guān)閉 posix 的使能,否則終端的輸入會有問題。

pYYBAGGlsKOAe6KSAAB-AwiKAJ8060.png

軟件包安裝
本次實驗實現(xiàn)音樂播放功能,單擊按鍵進行音樂切換。需要安裝的軟件包有 wavplayer/optparse/multibutton 三個軟件包。其中 optparse 在 wavplayer 勾選后,自動選擇。
進入軟件包選擇界面。

poYBAGGlsLSAF666AAD5Ap6kKNg960.pngpoYBAGGlsLyAcQ1mAADeuD1G2rM809.png

也可以通過`更多配置`查看所有軟件包來選擇個軟件包:
wavplayer 軟件包安裝

pYYBAGGlsNOAMDDDAAEaGd2dXkk369.png

multibutton 軟件包安裝

pYYBAGGlsOSAHACkAABW-otjzFs259.png

demo編寫
安裝完 wavplayer/optparse/multibutton 三個軟件包之后,就完成此次試驗所需要的依賴的軟件包。接下來開始編寫demo。
下載 romfs.c(本文件包含了兩個音頻文件用于demo播放) 放置到 applications 下
romfs.c
下載 mnt.c 替換 applications 下原有的文件,從而掛載 romfs,主要代碼在下方
mnt.c
#include #include "dfs_romfs.h"
int ab32_romfs_mount(void){
if (dfs_mount(RT_NULL, "/", "rom", 0, &(romfs_root)) == 0)
{
rt_kprintf("ROM file system initializated!\n");
}
else
{
rt_kprintf("ROM file system initializate failed!\n");
}

return 0;}INIT_ENV_EXPORT(ab32_romfs_mount);
然后在 applications 下新建 event_async.c 文件,復(fù)制以下代碼
#include #include #include "board.h"#include #include "wavplayer.h"
#define BUTTON_PIN_0 rt_pin_get("PF.0")#define BUTTON_PIN_1 rt_pin_get("PF.1")
#define NUM_OF_SONGS (2u)
static struct button btn_0;static struct button btn_1;
static uint32_t cnt_0 = 0;static uint32_t cnt_1 = 0;
static char *table[2] ={
"wav_1.wav",
"wav_2.wav",};
void saia_channels_set(uint8_t channels);void saia_volume_set(rt_uint8_t volume);uint8_t saia_volume_get(void);
static uint8_t button_read_pin_0(void){
return rt_pin_read(BUTTON_PIN_0);}
static uint8_t button_read_pin_1(void){
return rt_pin_read(BUTTON_PIN_1);}
static void button_0_callback(void *btn){
uint32_t btn_event_val;

btn_event_val = get_button_event((struct button *)btn);

switch(btn_event_val)
{
case SINGLE_CLICK:
if (cnt_0 == 1) {
saia_volume_set(30);
}else if (cnt_0 == 2) {
saia_volume_set(50);
}else {
saia_volume_set(100);
cnt_0 = 0;
}
cnt_0++;
rt_kprintf("vol=%d\n", saia_volume_get());
rt_kprintf("button 0 single click\n");
break;

case DOUBLE_CLICK:
if (cnt_0 == 1) {
saia_channels_set(1);
}else {
saia_channels_set(2);
cnt_0 = 0;
}
cnt_0++;
rt_kprintf("button 0 double click\n");
break;

case LONG_PRESS_START:
rt_kprintf("button 0 long press start\n");
break;

case LONG_PRESS_HOLD:
rt_kprintf("button 0 long press hold\n");
break;
}}
static void button_1_callback(void *btn){
uint32_t btn_event_val;

btn_event_val = get_button_event((struct button *)btn);

switch(btn_event_val)
{
case SINGLE_CLICK:
wavplayer_play(table[(cnt_1++) % NUM_OF_SONGS]);
rt_kprintf("button 1 single click\n");
break;

case DOUBLE_CLICK:
rt_kprintf("button 1 double click\n");
break;

case LONG_PRESS_START:
rt_kprintf("button 1 long press start\n");
break;

case LONG_PRESS_HOLD:
rt_kprintf("button 1 long press hold\n");
break;
}}
static void btn_thread_entry(void* p){
while(1)
{
/* 5ms */
rt_thread_delay(RT_TICK_PER_SECOND/200);
button_ticks();
}}
static int multi_button_test(void){
rt_thread_t thread = RT_NULL;

/* Create background ticks thread */
thread = rt_thread_create("btn", btn_thread_entry, RT_NULL, 1024, 10, 10);
if(thread == RT_NULL)
{
return RT_ERROR;
}
rt_thread_startup(thread);

/* low level drive */
rt_pin_mode (BUTTON_PIN_0, PIN_MODE_INPUT_PULLUP);
button_init (&btn_0, button_read_pin_0, PIN_LOW);
button_attach(&btn_0, SINGLE_CLICK, button_0_callback);
button_attach(&btn_0, DOUBLE_CLICK, button_0_callback);
button_attach(&btn_0, LONG_PRESS_START, button_0_callback);
button_attach(&btn_0, LONG_PRESS_HOLD, button_0_callback);
button_start (&btn_0);

rt_pin_mode (BUTTON_PIN_1, PIN_MODE_INPUT_PULLUP);
button_init (&btn_1, button_read_pin_1, PIN_LOW);
button_attach(&btn_1, SINGLE_CLICK, button_1_callback);
button_attach(&btn_1, DOUBLE_CLICK, button_1_callback);
button_attach(&btn_1, LONG_PRESS_START, button_1_callback);
button_attach(&btn_1, LONG_PRESS_HOLD, button_1_callback);
button_start (&btn_1);

return RT_EOK;}INIT_APP_EXPORT(multi_button_test);
程序下載
demo編寫完成后,單擊編譯按鈕開始編譯,編譯成功后下載編譯后生成的.dcf固件到芯片;
雙擊打開 Downloader

poYBAGGlsP6AGRjDAAMH157mP-I474.png

下載成功后會在串口界面打印"Hello World", 并會有l(wèi)ed燈閃爍

pYYBAGGlsRSAHhcOAAgHXsnHPt8509.png

思考:在這個demo學(xué)習(xí)過程中,發(fā)現(xiàn)了這樣幾個問題,一些函數(shù)看不懂,不知道參數(shù)代表的是什么意思。
對于需要配置什么也不是很明白,應(yīng)該是對thread還不是很明白,不知道哪里有相關(guān)的資料可以學(xué)習(xí)下。
還有就是安裝的這些軟件包是如何開發(fā)的。
因為電腦比較卡,圖片使用的是原demo的。實際工程已經(jīng)測試完。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 音樂播放器
    +關(guān)注

    關(guān)注

    0

    文章

    71

    瀏覽量

    16179
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    LP3910:硬盤式便攜媒體播放器的電源管理利器

    LP3910:硬盤式便攜媒體播放器的電源管理利器 在電子設(shè)備的設(shè)計中,電源管理是至關(guān)重要的一環(huán)。對于硬盤式便攜媒體播放器這類對電源要求較高的設(shè)備,一款性能出色的電源管理芯片能極大提升設(shè)備的穩(wěn)定性
    的頭像 發(fā)表于 04-30 15:45 ?160次閱讀

    ESP32藍(lán)牙驅(qū)動MAX98357對音頻音樂播放

    本文介紹了MAX98357音頻模塊的基本特性,并利用ESP32的藍(lán)牙功能程序驅(qū)動此模塊,最后用手機藍(lán)牙連接ESP32播放手機音樂
    的頭像 發(fā)表于 12-19 19:55 ?3304次閱讀
    ESP32藍(lán)牙驅(qū)動MAX98357對音頻<b class='flag-5'>音樂</b><b class='flag-5'>播放</b>

    花椒直播開源鴻蒙專屬直播播放器 助力高效開發(fā)高性能直播應(yīng)用

    近日,花椒直播開源了專注于直播場景的播放器“HJPlayer”。它基于自研的通用多媒體框架“HJMedia”打造,與早前開源的推流“HJPusher”共同構(gòu)成了覆蓋主播推流到觀眾播放的完整客戶端
    的頭像 發(fā)表于 10-22 11:20 ?516次閱讀
    花椒直播開源鴻蒙專屬直播<b class='flag-5'>播放器</b> 助力高效開發(fā)高性能直播應(yīng)用

    創(chuàng)通聯(lián)達助力飛傲M27革新便攜HiFi播放器體驗

    2025年8月15日,飛傲在第19屆深圳國際音頻展(SIAS)正式發(fā)布年度旗艦播放器FIIO M27。作為基于創(chuàng)通聯(lián)達TurboX C6490 SOM打造的標(biāo)桿產(chǎn)品,M27憑借該模塊的卓越性能與飛傲自研聲學(xué)技術(shù)形成協(xié)同突破,為用戶帶來全方位、全場景的優(yōu)秀音頻體驗,全面革新便攜HiFi
    的頭像 發(fā)表于 08-19 16:15 ?2464次閱讀

    2222#RTT設(shè)計大賽 #眼圖

    RTT
    jf_34552825
    發(fā)布于 :2025年08月11日 11:43:45

    【創(chuàng)龍TL3562-MiniEVM開發(fā)板試用體驗】9、帶音頻波形顯示的QT音樂播放器

    時域波形:直觀展示聲音的音量變化 (如聲波的震動幅度),默認(rèn)情況下顯示的是時域信號。,而不是頻率。數(shù)據(jù)來源是原始PCM樣本。 在 Qt 中為音頻播放器增加頻譜顯示功能,可以通過
    發(fā)表于 08-08 19:18

    Made with KiCad(135):Echo - 開源的音樂播放器

    “? Echo 是一個開源硬件平臺,專為音樂播放器設(shè)計。該項目的目標(biāo)是開發(fā)一款基于開源軟件并采用開源設(shè)計的高品質(zhì)音樂播放器。 ” ? Made with KiCad 系列將支持新的展示
    的頭像 發(fā)表于 07-16 11:17 ?3382次閱讀
    Made with KiCad(135):Echo - 開源的<b class='flag-5'>音樂</b><b class='flag-5'>播放器</b>

    【正點原子STM32MP257開發(fā)板試用】5.播放音樂

    代碼是直接使用Pygame實現(xiàn)的: 先初始化喇叭以及Pygame音頻代碼 再使用load函數(shù)導(dǎo)入系統(tǒng)自動的音樂 接著使用play函數(shù)開始播放 最后持續(xù)判斷是否播放完成 效果可以在系統(tǒng)功能中體驗到同樣的效果所以這里不放了。
    發(fā)表于 06-28 14:27

    基于STM32的音樂播放器電路+PCB源文件+源碼+論文等打包下載

    基于STM32的音樂播放器電路+PCB源文件+源碼+論文等打包,推薦下載!
    發(fā)表于 05-29 21:37

    RT-Thread+GD32,打造音樂播放器與NES模擬

    。02音頻播放基于RT-ThreadAudio框架,使用定時觸發(fā)DACDMA方式實現(xiàn)底層驅(qū)動:支持8K、11K、1
    的頭像 發(fā)表于 05-14 18:11 ?1239次閱讀
    RT-Thread+GD32,打造<b class='flag-5'>音樂</b><b class='flag-5'>播放器</b>與NES模擬<b class='flag-5'>器</b>

    dfd#電路知識 #RTT設(shè)計大賽

    RTT
    jf_34552825
    發(fā)布于 :2025年05月08日 19:50:18

    【開源獲獎案例】基于T5L智能屏的音樂播放與歌詞顯示方案

    ——來自迪文開發(fā)者論壇本期為大家推送迪文開發(fā)者論壇獲獎開源案例——基于T5L智能屏的音樂播放與歌詞顯示方案。該方案通過T5L串口與通用開發(fā)板、解碼板進行數(shù)據(jù)交互,將解析完成的音頻和歌詞通過串口發(fā)送給智能屏,實現(xiàn)
    的頭像 發(fā)表于 05-08 09:52 ?1016次閱讀
    【開源獲獎案例】基于T5L智能屏的<b class='flag-5'>音樂</b><b class='flag-5'>播放</b>與歌詞顯示方案
    南康市| 鄂托克前旗| 正安县| 绵阳市| 收藏| 班戈县| 绥芬河市| 台东市| 永修县| 南京市| 赤水市| 新营市| 通城县| 甘德县| 桐乡市| 中方县| 紫金县| 祁连县| 保康县| 获嘉县| 疏附县| 政和县| 东乡县| 老河口市| 合江县| 丰城市| 离岛区| 北宁市| 太谷县| 卓尼县| 临海市| 榕江县| 鄂尔多斯市| 莆田市| 台湾省| 寿阳县| 凤庆县| 安宁市| 龙口市| 阿坝| 铜梁县|