chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

鴻蒙系統(tǒng)HarmonyOS ? 來源:oschina ? 作者:osc_2wq8ft8d ? 2020-11-11 12:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

用PWM輸出方波

PWM輸出的方波頻率

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

f = Fcs / freq

其中,F(xiàn)cs是PWM時鐘源頻率;

PWM輸出方波的占空比

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

音符-頻率對應關系

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

開發(fā)板可以輸出的最低頻率

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

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);輸出方波信號;

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

可以輸出的方波最低頻率

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

>>>40*1000*1000/65535
610.3608758678569

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

準備曲譜

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

簡譜說明

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

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

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

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

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

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

編寫代碼

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

staticvolatileintg_buttonPressed=0;staticconstuint16_tg_tuneFreqs[]={0,//40MHz對應的分頻系數(shù):
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應該是低八度的,鏈接圖片中的曲譜不對,聲音到最后聽起來不太對勁};//曲譜時值,根據(jù)簡譜記譜方法轉寫,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

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

    關注

    0

    文章

    2

    瀏覽量

    1244
  • 鴻蒙
    +關注

    關注

    60

    文章

    2740

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    蜻蜓FM開源“SmartXPlayer”音頻播放組件,打造鴻蒙多端音頻播放新引擎

    近日,由蜻蜓FM研發(fā)的音頻播放組件“SmartXPlayer”正式開源并上線 OpenHarmony 三方庫中心倉。作為一款專為鴻蒙多端場景打造的音頻播放引擎,SmartXPlayer基于鴻蒙
    的頭像 發(fā)表于 07-21 16:31 ?340次閱讀
    蜻蜓FM開源“SmartXPlayer”音頻<b class='flag-5'>播放</b>組件,打造<b class='flag-5'>鴻蒙</b>多端音頻<b class='flag-5'>播放</b>新引擎

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

    前言 感謝正點原子和電子發(fā)燒友論壇提供的這次機會讓我有機會體驗這款正點原子STM32MP257開發(fā)板,希望可以借這個機會好好學習一下。 環(huán)境搭建 播放音樂有很多Python庫比如pygame
    發(fā)表于 06-28 14:27

    【ELF 2學習板試用】06 alsa-lib安裝和播放音樂

    的開發(fā)環(huán)境的安裝。 3 alsa-lib應用程序 使用alsa-lib庫編寫程序,實現(xiàn)播放音樂的功能。 下面是程序源碼 #include <stdio.h>
    發(fā)表于 02-18 16:31

    海貝R1便攜音樂播放器開箱

    ,插上耳機,你就擁有了一片獨立的小天地。 海貝R1這款便攜音樂播放器的顏值相當出色,75克的機身塞進去了3英寸的高清觸摸屏。圓潤的外形配合透明中框和多色可選主題配色,顏值非常的能打。純凈的HiBy OS不僅簡單易用,也進一步優(yōu)化
    的頭像 發(fā)表于 12-09 09:40 ?1670次閱讀
    海貝R1便攜<b class='flag-5'>音樂</b><b class='flag-5'>播放</b>器開箱

    【AI技術支持】ESP32-C3-Lyra播放音頻無法控制音量及異聲問題處理

    【AI技術支持】ESP32-C3-Lyra播放音頻無法控制音量及異聲問題處理
    的頭像 發(fā)表于 11-22 01:01 ?2177次閱讀
    【AI技術支持】ESP32-C3-Lyra<b class='flag-5'>播放音</b>頻無法控制音量及異聲問題處理

    TLV320AIC3100播放音頻的時候,拔插耳機然后插入就無法播放了,為什么?

    TLV320AIC3100播放音頻的時候. 拔插耳機.然后插入就無法播放....有幾個DAC寄存器被關閉..這個是什么問題? 是不是DAC哪個寄存器設置錯誤.... 如果停止播放
    發(fā)表于 11-08 07:23

    TPA3120D2播放中出現(xiàn)斷音的原因?怎么解決?

    TPA3120D2播放音樂時出現(xiàn)斷音的問題,用示波器測試時可以看出已超過10%的失真,但用信號發(fā)生器進行測試時卻未發(fā)現(xiàn)這情況,負載為8歐,地線及電源線都已做處理。 請問TPA3120D多大失真的情況下會出現(xiàn)斷音,如何避免出現(xiàn)這樣的問題
    發(fā)表于 11-07 07:43

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

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

    TLVaic3104設備接的是I2C2,播放音樂的時候出現(xiàn)錯誤是怎么回事?

    就是我們的3104設備接的是I2C2,MACASP0這部分的代碼已經(jīng)修改完了,也能識別sound list設備了,現(xiàn)在播放音樂的時候出現(xiàn)錯誤,請幫忙看下額。 啟動log
    發(fā)表于 10-31 06:03

    tas5548接上usb電腦上放音樂,放著放著就有爆破音了,為什么?

    剛買回來接上usb電腦上放音樂3個小時左右沒有異常,后來放著放著就有爆破音了,聲音稍微大聲一點都能聽到。后來越來 越嚴重有嚎叫聲了!tpa6138有可能壞了嗎?
    發(fā)表于 10-25 06:07

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

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

    AIC3254可以正在工作時調整其寄存器的值嗎?

    AIC 3254可以正在工作時(例如正在播放音樂時),調整其寄存器的值嗎(例如調整音量 LOL driver gain)嗎?
    發(fā)表于 10-24 06:13

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

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

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

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

    TLV320AIC3204錄音后播放有噪聲怎么解決?

    1,錄音后播放有噪聲 2,直接播放音樂,暫停后,會持續(xù)一段時間有噪聲輸出。
    發(fā)表于 10-21 06:14