色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用鴻蒙OS在蜂鳴器播放音樂

鴻蒙系統HarmonyOS ? 來源:oschina ? 作者:osc_2wq8ft8d ? 2020-11-11 12:04 ? 次閱讀

本文介紹如何在HiSpark Wi-Fi IoT套件上,使用Harmony OS IoT硬件子系統的PWM接口 驅動蜂鳴器 播放音樂。

用PWM輸出方波

PWM輸出的方波頻率

通過PwmStart接口的注釋,可以知道freq參數是分頻倍數,PWM實際輸出的方波頻率等于 PWM時鐘源頻率 除以 分頻倍數,即

f = Fcs / freq

其中,Fcs是PWM時鐘源頻率;

PWM輸出方波的占空比

通過PwmStart接口的duty參數可以控制輸出方波的占空比,占空比是指PWM輸出的方波波形的高電平時間占整個方波周期的比例,具體占空比值是 duty 和 freq的比值,例如想要輸出占空比 50%的方波信號,那么duty填的值就要是 freq/2;

音符-頻率對應關系

參考:https://liam.page/2018/04/09/pitch-interval-and-harmonic/

開發板可以輸出的最低頻率

通過前面的公式,我們知道:

PWM輸出的方波頻率和freq成反比,freq越大,輸出的方波頻率越小;

freq是unsinged short類型,最大值為65535;
因此,輸出頻率的最小值取決于時鐘源,PWM的默認時鐘源為160M:

unsignedintHalPwmInit(HalWifiIotPwmPortport){if(hi_pwm_set_clock(PWM_CLK_160M)!=HI_ERR_SUCCESS){return(unsignedint)HAL_WIFI_IOT_FAILURE;
}returnhi_pwm_init((hi_pwm_port)port);
}

我們通過直接調用hi_pwm_set_clock接口,可以修改時鐘源:

/**
*@ingroupiot_pwm
*
*EnumeratesthePWMclocksources.CNcomment:PWM時鐘源枚舉。CNend
*/typedefenum{
PWM_CLK_160M,/**

通過注釋我們知道hi_pwm_set_clock(PWM_CLK_XTAL);可以將時鐘源設置為晶體時鐘,晶體時鐘可能為24M或40M;
那么問題來了——晶體時鐘到底是多少?

晶體時鐘頻率是多少?

我們可以通過通過實驗,測算出晶體時鐘頻率,具體步驟如下:

使用hi_pwm_set_clock(PWM_CLK_XTAL);設置時鐘源為晶體時鐘;

使用PwmStart(WIFI_IOT_PWM_PORT_PWM0, 20*1000, 40*1000);輸出方波信號;

使用示波器測量方波頻率;
經實際測量,方波評率為1000Hz,因此,時鐘頻率為1000 * 40 * 1000也就是 40 MHz;

可以輸出的方波最低頻率

因此,方波最低頻率就是 40M / 65535 ,也就是:

>>>40*1000*1000/65535
610.3608758678569

對照上面的頻率表,可以知道,能夠輸出E?以上的所有音符;

準備曲譜

為了代碼實現起來簡單,我選擇了《兩只老虎》的曲譜作為素材,很快找到了簡譜:

簡譜說明

對于缺乏音樂基礎的同學,簡譜上的一些記號可能不太清楚是什么意思,這里簡單說明一下:

左上角的1=C是表示調式(可以不用關心),1是唱名,C是音名,1=C是正調(就是常規的對應關系: 1-C,2-D, 3-E, 4-F, 5-G, 6-A, 7-B);

左上角的 4/4 是四四拍,是指 四分音符為一拍, 每小節有四拍;

下面譜子上的豎線就是每個小節分隔符,和4/4對應;

“跑得快”上面5后面的橫線表示延時一拍;

“一直沒有眼睛”一句,5后面的點表示順延半拍,一條下劃線表示二分之一時間,兩條下劃線表示四分之一時間;

編寫代碼

有了以上知識,我們就可以編寫代碼了,關鍵部分代碼如下:

staticvolatileintg_buttonPressed=0;staticconstuint16_tg_tuneFreqs[]={0,//40MHz對應的分頻系數:
38223,//11046.5
34052,//21174.7
30338,//31318.5
28635,//41396.9
25511,//51568
22728,//61760
20249,//71975.5
51021//5_783.99//第一個八度的5};//曲譜音符staticconstuint8_tg_scoreNotes[]={//《兩只老虎》簡譜:http://www.jianpu.cn/pu/33/33945.htm
1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,5,6,5,4,3,1,1,8,1,1,8,1,//最后兩個5應該是低八度的,鏈接圖片中的曲譜不對,聲音到最后聽起來不太對勁};//曲譜時值,根據簡譜記譜方法轉寫,4/4拍中下面劃一條線是半拍,劃兩條線是四分之一拍,點是順延半拍staticconstuint8_tg_scoreDurations[]={4,4,4,4,4,4,4,4,4,4,8,4,4,8,3,1,3,1,4,4,3,1,3,1,4,4,4,4,8,4,4,8,
};staticvoid*BeeperMusicTask(constchar*arg){
(void)arg;printf("BeeperMusicTaskstart!\r\n");

hi_pwm_set_clock(PWM_CLK_XTAL);//設置時鐘源為晶體時鐘(40MHz,默認時鐘源160MHz)

for(size_ti=0;i

其中譜子最后兩個5是譜子的錯誤,應該是低八度的5,也就是5下面應該打一個點;我修改了代碼,讓整個曲子聽起來更自然;

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 有源無源蜂鳴器

    關注

    0

    文章

    2

    瀏覽量

    1164
  • 鴻蒙
    +關注

    關注

    57

    文章

    2363

    瀏覽量

    42888
收藏 人收藏

    評論

    相關推薦

    使用TLV320AIC3254EVM-U用PPS控制時候播放音樂,突然中斷,然后又恢復,為什么?

    我使用TLV320AIC3254EVM-U 用PPS 控制時候播放音樂,突然中斷,然后又恢復。出現頻率很高。用TI的固件并用CS軟件播放時候沒有出現這個問題。 請問大家我需要做什么部分參數設置?power tune or 其他?
    發表于 11-01 07:15

    TPA3116加了MUTE電路后播放音樂音量開到最大喇叭出現雜音怎么解決?

    TPA3116加了MUTE電路后播放音樂音量開到最大喇叭出現雜音(低音最明顯)
    發表于 10-24 07:23

    用freescale的CPU做host連接tlv320aic3254,播放音樂時,i2s上Wclk,Bclk都沒有信號怎么解決?

    目前我們的項目是:用freescale的 CPU做host連接tlv320aic3254,是通過i2s連接傳輸信號的;the sampling rate 設置是44.1KHz,Mclk是24M; 目前問題是:播放音樂時,i2s上Wclk,Bclk都沒有信號;
    發表于 10-22 07:40

    TAS5733L按照初始化的寄存器配置,播放音樂無聲是怎么回事?

    按照貴司提供的初始化的寄存器配置(如附件)設置,讀取0x05,0x06也是設定的值。播放音樂此時仍然無聲。 請問,是否還有額外的寄存器需要配置? 謝謝!
    發表于 10-21 07:41

    TAS5805BYPASS狀態下小音量播放音樂遇到低頻大動態時會有“POPO”的爆音,怎么解決?

    TAS5805測試電路的失真1%以下。但在BYPASS狀態下小音量播放音樂遇到低頻大動態時會有“POPO”的爆音。請問怎么解決。
    發表于 10-12 06:37

    TAS2521播放音樂的時,將音量調到最大,喇叭就會自動mute,這種情況是不是輸出功率過大導致過流保護?

    你好,想請教以下幾個問題 1.播放音樂的時候,只要將音量調到最大,喇叭就會自動mute。這種情況的是不是輸出功率過大導致的過流保護? 2.為什么播放單頻或者粉噪聲的時候,就算
    發表于 10-10 08:16

    設計的TPA3116D2功放電路,播放音樂最大輸出時部分IC出現斷音的原因?

    我設計的TPA3116D2功放電路,供電24V,輸出電感33uH,IC頂部加了散熱器,雙聲道2個4歐喇叭,3.3UF接2個高音喇叭,播放音樂最大輸出時部分IC出現斷音(保護),重新更換TPA3116就好了,請教是可能什么原因會導致3116損害,有什么對策嗎,
    發表于 08-16 11:25

    TPA3116播放音樂時,聲音非常大時會啪啪響,請問有辦法解決嗎?

    TPA3116播放音樂時,聲音非常大時(已出現截止失真)會啪啪響,請問有辦法解決么? 用TCD-781曲目測試發現,當播放曲目3,4,5時(17hz/0db正弦波),推挽輸出幅度只要超過最大
    發表于 08-13 08:32

    wifi的STA模式下無法播放sdcard音樂是什么原因?

    pipeline_sdcard_mp3_control的基礎上加了一個wifi的sta,本來想一邊連接熱點一邊播放音樂。后來運行之后按play就沒法正常播放了。剛開始還以為要用線程。后來創建了一
    發表于 06-28 06:55

    如何通過BLE播放音頻?

    現在是我有一個android app,有一塊esp32板子上面有喇叭,板子刷了a2dp_sink例子的固件。如果用bluetooth 和板子pair之后,可以播放音樂。 現在要求不用bluetooth,而是用ble連接,然后播放音樂,請問可以實現嗎?求指點迷津,謝謝。
    發表于 06-26 06:36

    請問用蜂鳴器播放音樂的時候如何同時播放兩段音樂

    我用 PWM 控制的音樂播放,可以按照樂譜播放音符 但現在有個需求,是播放背景音樂的時候同時疊
    發表于 06-14 08:23

    HarmonyOS實戰開發-如何實現音頻低時延錄制和播放,AudioVivid音樂播放的相關功能

    介紹 本示例主要展示了音頻低時延錄制和播放,AudioVivid音樂播放的相關功能: 低時延錄制。 低時延播放。 AudioVivid播放.
    發表于 05-11 20:26

    KT148A語音芯片串口版本播放音樂的時候,直接導致單片機工作異常

    使用你們KT148A串口版本播放音樂的時候,直接導致單片機工作異常,測了一下供電發現每次播放音樂的時候,供電會有很大波動。看了一下你們的手冊,說是帶載能力不夠,但是我把供電接出來,接到你們的測試板上時,單片機又正常工作了
    的頭像 發表于 05-07 10:50 ?508次閱讀
    KT148A語音芯片串口版本<b class='flag-5'>播放音樂</b>的時候,直接導致單片機工作異常

    藍牙連接手機播放音樂的同時傳輸少量數據,那些藍牙芯片可以實現呢

    藍牙連接手機播放音樂的同時連接另一藍牙芯片傳輸少量數據,那些藍牙芯片可以實現呢? 這個需求,其實就是雙模的需求 簡單描述就是:播放音樂的同時,還可以連接ble,進行數據的傳輸。二者同時進行,互不
    的頭像 發表于 04-30 11:26 ?722次閱讀
    藍牙連接手機<b class='flag-5'>播放音樂</b>的同時傳輸少量數據,那些藍牙芯片可以實現呢

    鴻蒙HarmonyOS開發實戰:【分布式音樂播放

    本示例使用fileIo獲取指定音頻文件,并通過AudioPlayer完成了音樂播放完成了基本的音樂播放、暫停、上一曲、下一曲功能;并使用DeviceManager完成了分布式設備列表
    的頭像 發表于 04-10 17:51 ?887次閱讀
    <b class='flag-5'>鴻蒙</b>HarmonyOS開發實戰:【分布式<b class='flag-5'>音樂</b><b class='flag-5'>播放</b>】
    主站蜘蛛池模板: 亚洲精品成人| 二级毛片免费观看全程| 精品国产乱码久久久久久口爆| 午夜影院费试看黄| 寂寞护士中文字幕 mp4| 最新色导航| 乳女教师欲乱动漫无修版动画| 国产乱对白精彩在线播放| 亚洲乱码国产乱码精品精98| 老师破女学生特级毛片| 成人在线免费观看| 亚洲午夜久久久久中文字幕| 美女一级毛片免费不卡视频| 顶级少妇AAAAABBBBB片| 亚洲影院在线播放| 亲胸摸下面激烈免费网站| 国产亚洲日韩另类在线播放| 97国内精品久久久久久久影视| 色翁荡熄月月| 久久婷婷五月综合色精品首页| 边做边爱BD免费看片| 亚洲精品久久久久中文字幕二区| 免费的av不用播放器的| 国产精品久久毛片A片软件爽爽 | 国产午夜精品福利久久| 中文字幕不卡在线高清| 双手绑在床头调教乳尖| 浪潮色诱AV久久久久久久| 国产成人免费片在线观看| 在线欧美 精品 第1页| 神马电影院午 夜理论| 久久久无码精品一区二区三区 | 97人妻无码AV碰碰视频| 我的美女奴隶| 年轻的朋友4在线看中文字幕| 国产午夜在线精品三级a午夜电影| 99国产热视频在线观看| 亚洲免费大全| 撕烂衣服扒开胸罩揉爆胸| 男男腐文污高干嗯啊快点1V1| 国产永久免费高清在线观看|