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

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

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

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

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】播放音樂

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-31 14:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文來源電子發(fā)燒友社區(qū),作者:華仔stm32, 帖子地址:https://bbs.elecfans.com/jishu_2299368_1_1.html


前面因?yàn)楸焙5囊咔?,科室抽搞了人員去支援,所單位的事一直在超負(fù)荷工作,這一個(gè)月都沒有時(shí)間寫文章,現(xiàn)在恢復(fù)正常,接上面的繼續(xù)學(xué)習(xí)套件的學(xué)習(xí),并分享給大家。

前面自己用pwm寫過一個(gè)可以播放音樂的帖子,是用liteos來寫的,這次學(xué)習(xí)了HarmonyOS來實(shí)現(xiàn)這一功能。

1、新建工程,按下圖

image.png

image.png

然后點(diǎn)擊創(chuàng)建:

image.png

等待下載結(jié)束,在彈出的對(duì)話框中選擇當(dāng)前窗口:

image.png

2、主要代碼分析:

#define IOT_TEST_PWM_GPIO9 9 // 指定蜂鳴器的pwm輸出IO
#define IOT_PWM_PORT0 0

#define IOT_IO_NAME_GPIO_8 8    // 按鍵檢測(cè)IO
#define PWM_DUTY 50      //占空比
#define M_INTERVAL_TIME_TICK 60  
#define TICKS_DELAY  125*1000

3、頻率與音符的對(duì)應(yīng):

static const uint16 g_tuneFreqs[] = {
    0,        // 40M Hz 對(duì)應(yīng)的分頻系數(shù):
    1046 * 4, // 1046.50  1
    1174 * 4, // 1174.66  2
    1318 * 4, // 1318.51  3
    1396 * 4, // 1396.91  4
    1567 * 4, // 1567.99  5
    1760 * 4, // 1760.00  6
    1975 * 4, // 1975.53  7
    523 * 4,  // 523.25   1-  低一個(gè)8度的1
    587 * 4,  // 587.33   2-
    659 * 4,  // 659.26   3-   
    698 * 4,   // 698.46  4-
    783 * 4,  // 783.99   5-
    880 * 4,   // 880.00  6-
    987 * 4,  // 987.77   7-    
};

4、定義音符與節(jié)拍:

typedef enum
{
    D_DO = 1,  // 1
    D_RE,      // 2
    D_MI,      // 3
    D_FA,      // 4
    D_SO,      // 5
    D_LA,      // 6
    D_SI,      // 7
    C_DO,      // 1- 
    C_RE,      // 2- 
    C_MI,      // 3-
    C_FA,      // 4- 
    C_SO,      // 5- 
    C_LA,      // 6- 
    C_SI       // 7-     
} MusicTuneNotes;

typedef enum
{
    BEAT_1X4B = 1,   //4分之1拍為基礎(chǔ)值1
    BEAT_1X2B,
    BEAT_3X4B,
    BEAT_1B,
    BEAT_3X2B = 6,
    BEAT_2B = 8,
    BEAT_3B = 12,
    BEAT_4B = 16
} MusicTuneInterval;

/*音符與時(shí)間間隔結(jié)構(gòu)體*/
typedef struct
{
    MusicTuneNotes tuneNotes;       //音符
    MusicTuneInterval interval;     //時(shí)間間隔
} MusicNotesInterval;

5、曲譜,數(shù)組里面定義了音符與節(jié)拍:

*曲譜*/
static const MusicNotesInterval g_interval[] = {
    {D_MI,BEAT_1X2B},{D_SO,BEAT_1X2B},{D_SO,BEAT_3X4B},{D_LA,BEAT_1X4B},{D_SO,BEAT_1X2B},{D_MI,BEAT_1X2B},{D_DO,BEAT_1X2B},
    {D_DO,BEAT_1X4B},{D_RE,BEAT_1X4B},{D_MI,BEAT_1X2B},{D_MI,BEAT_1X2B},{D_RE,BEAT_1X2B},{D_DO,BEAT_1X2B},{D_RE,BEAT_2B},
    {D_MI,BEAT_1X2B},{D_SO,BEAT_1X2B},{D_SO,BEAT_3X4B},{D_LA,BEAT_1X4B},{D_SO,BEAT_1X2B},{D_MI,BEAT_1X2B},{D_DO,BEAT_1X2B},
    {D_DO,BEAT_1X4B},{D_RE,BEAT_1X4B},{D_MI,BEAT_1X2B},{D_MI,BEAT_1X2B},{D_RE,BEAT_1X2B},{D_RE,BEAT_1X2B},{D_DO,BEAT_2B},
    {D_FA,BEAT_1B},{D_FA,BEAT_1B},{D_FA,BEAT_1X2B},{D_LA,BEAT_3X2B},{D_SO,BEAT_1B},{D_SO,BEAT_3X4B},{D_MI,BEAT_1X4B},
    {D_RE,BEAT_2B},{D_MI,BEAT_1X2B},{D_SO,BEAT_1X2B},{D_SO,BEAT_3X4B},{D_LA,BEAT_1X4B},{D_SO,BEAT_1X2B},{D_MI,BEAT_1X2B},
    {D_DO,BEAT_1X2B},{D_DO,BEAT_1X4B},{D_RE,BEAT_1X4B},{D_MI,BEAT_1X2B},{D_MI,BEAT_1X2B},{D_RE,BEAT_1X2B},{D_RE,BEAT_1X2B},
    {D_DO,BEAT_2B}
};

6、按鍵響應(yīng)函數(shù),當(dāng)按鍵按下后更新標(biāo)志位music:

/*按鍵響應(yīng)函數(shù)*/
static void OnButtonPressed(char *arg)
{
    (void)arg;
    IoTGpioUnregisterIsrFunc(IOT_IO_NAME_GPIO_8);

    music = 1;
    printf("
>>>>>>>>>>button is enter >>>.[%d]
", music);

    IoTGpioRegisterIsrFunc(IOT_IO_NAME_GPIO_8, IOT_INT_TYPE_EDGE, IOT_GPIO_EDGE_FALL_LEVEL_LOW, 
    OnButtonPressed, NULL);
}

7、音樂處理函數(shù):

static void *BeeperMusicTask(const char *arg)
{
    (void)arg;
    
    printf("BeeperMusicTask start!
");

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

    while (1)
    {
        osDelay(M_INTERVAL_TIME_TICK);
        /*第一次點(diǎn)擊按鍵播放,播放完以后按鍵才能繼續(xù)生效*/
        if (music == 1)
        {
            for (size_t i = 0; i < sizeof(g_interval) / sizeof(g_interval[0]); i++)
            {  
                uint32 tune = g_interval[i].tuneNotes; // 音符
                uint16 freqDivisor = g_tuneFreqs[tune];
                uint32 tuneInterval = g_interval[i].interval * (TICKS_DELAY); // 音符時(shí)間
                IoTPwmStart(IOT_PWM_PORT0, PWM_DUTY, freqDivisor);
                usleep(tuneInterval);
                IoTPwmStop(IOT_PWM_PORT0);
                music = 0;
            }
        }
    }

    return NULL;
}

8、創(chuàng)建音樂播放任務(wù):

static void BeepMusicEntry(void)
{
    osThreadAttr_t attr;
    /* 初始化按鍵 */
    IoTGpioInit(IOT_IO_NAME_GPIO_8);   //button
    IoTGpioSetDir(IOT_IO_NAME_GPIO_8, IOT_GPIO_DIR_IN);
    /* 注冊(cè)按鍵中斷回調(diào) */
    IoTGpioRegisterIsrFunc(IOT_IO_NAME_GPIO_8, IOT_INT_TYPE_EDGE, IOT_GPIO_EDGE_FALL_LEVEL_LOW, OnButtonPressed, NULL);
    /* 初始化蜂鳴器輸出IO */
    IoTGpioInit(IOT_TEST_PWM_GPIO9);      //BWM
    IoTGpioSetDir(IOT_TEST_PWM_GPIO9, IOT_GPIO_DIR_OUT);
    IoTPwmInit(IOT_PWM_PORT0);

    IoTWatchDogDisable();

    attr.name = "BeeperMusicTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = 1024;
    attr.priority = osPriorityNormal;

    if (osThreadNew((osThreadFunc_t)BeeperMusicTask, NULL, &attr) == NULL)
    {
        printf("[BeeperMusicTask] Falied to create BeepTask!
");
    }
}

9、開機(jī)創(chuàng)建啟動(dòng):APP_FEATURE_INIT(BeepMusicEntry);

【設(shè)置編譯選項(xiàng)】

1、在applications/sample/wifi-iot/app/demo_beep下的BUILD.gn創(chuàng)建jison:

static_library("demo_beep") {
    sources = [
        "beep_music_demo.c"
    ]

    include_dirs = [
        "http://utils/native/lite/include",
        "http://kernel/liteos_m/components/cmsis/2.0",
        "http://base/iot_hardware/peripheral/interfaces/kits",
    ]
}

2、在applications/sample/wifi-iot/app下面創(chuàng)建BUILD.gn:

import("http://build/lite/config/component/lite_component.gni")

lite_component("app") {
    features = [
        "demo_beep",
    ]
    deps = []
}

【編譯】:

image.png

到這一步就顯示編譯成功了:

image.png

【拷貝文件到HiBurn目錄下面】輸出的文件在/home/hihope/Documents/DevEco/Projects/lyevk_hm_beep/out/hispark_pegasus/wifiiot_hispark_pegasus目錄下面:

1660288320029.png

將Hi3861_wifiiot_app_allinone.bin復(fù)制到win下面。然后燒錄到開發(fā)板就OK了。

image.png

重啟開發(fā)板,按下按鍵,就可以播放音樂了。

image.png

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

    關(guān)注

    15

    文章

    2470

    瀏覽量

    130086
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2157

    瀏覽量

    36325
  • HiSpark
    +關(guān)注

    關(guān)注

    1

    文章

    156

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    物聯(lián)網(wǎng)浪潮下,如何精準(zhǔn)選型Wi-Fi模塊?

    在物聯(lián)網(wǎng)迅猛發(fā)展、Wi-Fi技術(shù)日益成熟的當(dāng)下,眾多場(chǎng)景尤其是移動(dòng)設(shè)備領(lǐng)域,對(duì) Wi-Fi 無線數(shù)據(jù)傳輸?shù)男枨笈c日俱增。那么,在眾多設(shè)備中究竟該如何挑選合適的 Wi-Fi模塊 呢?接下來為您詳細(xì)介紹
    的頭像 發(fā)表于 03-02 15:37 ?329次閱讀
    物聯(lián)網(wǎng)浪潮下,如何精準(zhǔn)選型<b class='flag-5'>Wi-Fi</b>模塊?

    技術(shù)資訊 I Wi-Fi 模塊設(shè)計(jì)

    本文要點(diǎn)Wi-Fi模塊設(shè)計(jì)旨在打造一套緊湊且高效的硬件和軟件解決方案,使設(shè)備能夠通過Wi-Fi網(wǎng)絡(luò)實(shí)現(xiàn)通信。Wi-Fi模塊設(shè)計(jì)是一個(gè)復(fù)雜的過程,要求研發(fā)人員兼具硬件與軟件工程方面的專業(yè)知識(shí)
    的頭像 發(fā)表于 02-27 17:12 ?914次閱讀
    技術(shù)資訊 I <b class='flag-5'>Wi-Fi</b> 模塊設(shè)計(jì)

    Wi-Fi:無線連接的全球通用語

    一、什么是Wi-FiWi-FiWi-Fi聯(lián)盟制造商的商標(biāo)認(rèn)證,是基于IEEE 802.11標(biāo)準(zhǔn)的無線局域網(wǎng)技術(shù)。它允許電子設(shè)備在特定范圍內(nèi)無線接入網(wǎng)絡(luò),實(shí)現(xiàn)高速數(shù)據(jù)交換與互聯(lián)網(wǎng)訪問,已成為
    發(fā)表于 01-07 09:49

    Nordic發(fā)布nRF7002 EBII 開發(fā)板, 支持Wi-Fi 6, 解鎖nRF54L新玩法

    Wi-Fi 6 功能,幫助開發(fā)人員創(chuàng)建高性能、高能效的Wi-Fi 6 物聯(lián)網(wǎng)解決方案。 基于 Nordic 的 nRF7002 Wi-Fi 協(xié)同 IC,nRF7002 EBII幫助 采用
    發(fā)表于 12-10 11:58

    Wi-Fi模塊選型指南 | 低功耗藍(lán)牙/Wi-Fi 6模塊推薦 | 物聯(lián)網(wǎng)設(shè)備集成攻略

    物聯(lián)網(wǎng)的快速發(fā)展,Wi-Fi技術(shù)的成熟的情況下,越來越多的場(chǎng)景需要用到Wi-Fi來無線傳輸數(shù)據(jù),尤其是移動(dòng)設(shè)備中,怎么再設(shè)備中選擇合適的Wi-Fi模塊呢?下面我們來介紹下Wi-Fi模塊
    的頭像 發(fā)表于 12-09 11:27 ?1389次閱讀
    <b class='flag-5'>Wi-Fi</b>模塊選型指南 | 低功耗藍(lán)牙/<b class='flag-5'>Wi-Fi</b> 6模塊推薦 | 物聯(lián)網(wǎng)設(shè)備集成攻略

    淺談Wi-Fi 6E與Wi-Fi 7的關(guān)鍵器件——BAW濾波器新技術(shù)

    作者: Qorvo 亞太區(qū)無線連接事業(yè)部高級(jí)行銷經(jīng)理林健富 ? 2020年1月,Wi-Fi聯(lián)盟正式宣布開放6GHz頻段(5925MHz-7125MHz),并將其命名為Wi-Fi 6E。2020年4月
    發(fā)表于 09-19 18:29 ?2515次閱讀
    淺談<b class='flag-5'>Wi-Fi</b> 6E與<b class='flag-5'>Wi-Fi</b> 7的關(guān)鍵器件——BAW濾波器新技術(shù)

    解讀Nordic基于SSID的Wi-Fi定位解決方案

    隨著 nRF7000 Wi-Fi 協(xié)同 IC 的推出,我們現(xiàn)在可以提供具有 Wi-Fi、蜂窩物聯(lián)網(wǎng)和 GNSS 功能的完整硅到云定位解決方案。nRF7000 針對(duì) Wi-Fi 網(wǎng)絡(luò)掃描進(jìn)行了優(yōu)化
    的頭像 發(fā)表于 09-09 17:11 ?4105次閱讀
    解讀Nordic基于SSID的<b class='flag-5'>Wi-Fi</b>定位解決方案

    如何更新 NuMaker IoT 板上的 Wi-Fi 模塊固件?

    更新 NuMaker IoT 板上的 Wi-Fi 模塊固件
    發(fā)表于 09-04 08:28

    基于 SSID 的 Wi-Fi 定位:與其他定位服務(wù)的性能比較

    隨著 nRF7000 Wi-Fi 協(xié)同 IC 的推出,我們現(xiàn)在可以提供具有 Wi-Fi、蜂窩物聯(lián)網(wǎng)和 GNSS 功能的完整硅到云定位解決方案。nRF7000 針對(duì) Wi-Fi 網(wǎng)絡(luò)掃描進(jìn)行了優(yōu)化
    發(fā)表于 08-31 21:01

    LitePoint Wi-Fi測(cè)試軟件減輕客戶設(shè)計(jì)負(fù)擔(dān)

    Wi-Fi 7于一年多前獲得Wi-Fi聯(lián)盟認(rèn)證以來,作為最新一代通信技術(shù),Wi-Fi正逐步成為用戶實(shí)現(xiàn)無所不在無線連接的新選擇。隨著每一代Wi-Fi信號(hào)復(fù)雜性的提升,建議將硬件測(cè)試納
    的頭像 發(fā)表于 08-06 15:34 ?1426次閱讀
    LitePoint <b class='flag-5'>Wi-Fi</b>測(cè)試軟件減輕客戶設(shè)計(jì)負(fù)擔(dān)

    Texas Instruments CC335x SimpleLink?雙頻Wi-Fi? 6配套IC數(shù)據(jù)手冊(cè)

    RTOS主機(jī)的成本敏感型嵌入式應(yīng)用。Texas Instruments CC335x為物聯(lián)網(wǎng) (IoT) 的嵌入式設(shè)備應(yīng)用帶來了Wi-Fi 6的高效性能,并具有較小的PCB占用面積和高度優(yōu)化的物料清單
    的頭像 發(fā)表于 07-23 11:37 ?1791次閱讀
    Texas Instruments CC335x SimpleLink?雙頻<b class='flag-5'>Wi-Fi</b>? 6配套IC數(shù)據(jù)手冊(cè)

    有沒有什么修復(fù)方法可以確保 AP 模式下的 Wi-Fi 和 BLE 連接同時(shí)正常工作?

    我正在使用 CYBSYSKIT DEV 01 套件。我嘗試在 AP 模式下打開 Wi-Fi 并宣傳 BLE。我可以宣傳 SoftAP 和 BLE。但是,我無法從中央設(shè)備連接到 BLE。它可以立即連接并斷開連接。有沒有什么修復(fù)方法可以確保 AP 模式下的
    發(fā)表于 07-17 06:13

    如何選擇合適的芯科科技Wi-Fi開發(fā)板

    您正在尋找適用于超低功耗物聯(lián)網(wǎng)應(yīng)用項(xiàng)目的Wi-Fi 開發(fā)板嗎?本文將介紹Silicon Labs(芯科科技)推出的所有SiWx917 Wi-Fi 6和低功耗藍(lán)牙5.4解決方案的Wi-Fi 開發(fā)板。SiWx917是目前市場(chǎng)上最節(jié)能
    的頭像 發(fā)表于 07-09 09:15 ?3047次閱讀

    科普|公司的Wi-Fi,為什么這么慢?

    大家在公司上班,經(jīng)常會(huì)使用到Wi-Fi。最近這幾年,隨著時(shí)代的發(fā)展,高清視頻會(huì)議等大帶寬網(wǎng)絡(luò)應(yīng)用越來越普遍。而公司的網(wǎng)絡(luò),卻非常不給力,頻繁卡頓,嚴(yán)重影響使用體驗(yàn)。哪怕IT的同事已經(jīng)把網(wǎng)絡(luò)優(yōu)化得很
    的頭像 發(fā)表于 06-20 06:06 ?1852次閱讀
    科普|公司的<b class='flag-5'>Wi-Fi</b>,為什么這么慢?

    Wi-Fi 8:開啟極高可靠性 (UHR) 連接的新紀(jì)元——1

    英國作家狄更斯在《雙城記》的開頭寫道:“這是最好的時(shí)代,也是最壞的時(shí)代?!?這句話若套用在現(xiàn)今Wi-Fi 的市場(chǎng)現(xiàn)狀,何嘗不是驚人的相似? 怎么說呢?Wi-Fi 從被發(fā)明至今已經(jīng)經(jīng)過了20多年的迭代
    發(fā)表于 06-13 11:09
    塔河县| 婺源县| 牙克石市| 酒泉市| 扶沟县| 荔浦县| 凤城市| 水城县| 勃利县| 天门市| 辽阳县| 中西区| 鄂托克前旗| 锡林郭勒盟| 哈密市| 黄骅市| 施甸县| 应城市| 墨竹工卡县| 嘉善县| 江陵县| 博爱县| 确山县| 吉林市| 巴林左旗| 丰镇市| 安顺市| 大港区| 尉犁县| 安溪县| 凤山县| 图木舒克市| 石阡县| 津南区| 北安市| 贞丰县| 秦皇岛市| 澄江县| 台中县| 阿拉善右旗| 濮阳县|