成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenHarmony Neptune開發板PWM驅動 播放《小星星》

開發 前端
本文介紹如何在Neptune開發板上,使用openHarmony IoT硬件子系統的PWM接口 驅動蜂鳴器 播放音樂。

[[422879]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

本文介紹如何在Neptune開發板上,使用openHarmony IoT硬件子系統的PWM接口 驅動蜂鳴器 播放音樂。

一、環境準備

1.1 開發環境、編譯環境搭建,參考官方文檔,參考鏈接如下:

Neptune開發板的環境搭建及使用

1.2 Neptune開發板 openharmony V1.1.0 LTS 版本獲取:

  1. git clone https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot.git 

二、材料準備

1、Neptune HarmonyOS物聯網 IOT模組

2、無源蜂鳴器模塊

3、杜邦線若干

三、相關基礎知識介紹

鴻蒙系統IoT硬件子系統提供了一些外設相關的接口,目錄位于:

  1. base/iot_hardware/peripheral/interfaces/kits 

PWM相關接口,接口頭文件為iot_pwm.h,其中用PWM輸出方波的API:

  1. unsigned int IoTPwmStart(unsigned int port, unsigned short duty, unsigned int freq); 

接口參數介紹:(這里與HI3861不相同,其適配是使用W800 SDK中PWM接口,若需要了解可自行查看)

freq:IoTPwmStart接口中freq參數就是PWM實際輸出的方波頻率(頻率范圍0~65535)

duty:IoTPwmStart接口的duty參數是控制輸出方波的占空比的參數,占空比是指PWM輸出的方波波形的高電平時間占整個方波周期的比例,具體占空比值是 duty /256的比值,,例如想要輸出占空比50%的方波信號,那么duty填的值就要是128。

四、音符-頻率對應關系

OpenHarmony Neptune開發板PWM驅動 播放《小星星》-鴻蒙HarmonyOS技術社區

五、準備曲譜

為了代碼實現起來簡單,我選擇了《小星星》的曲譜作為素材,在簡譜網找到了簡譜:

OpenHarmony Neptune開發板PWM驅動 播放《小星星》-鴻蒙HarmonyOS技術社區

六、簡譜說明------參考許思維老師用鴻蒙OS在蜂鳴器上播放一曲《兩只老虎》

七、編寫代碼

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

  1. #define PWM_DUTY 128 
  2. static const uint16_t g_tuneFreqs[] = { 523,587,659,698,784,880,988}; 
  3.  
  4. // 曲譜音符 
  5. static const uint8_t g_scoreNotes[] = { 
  6.   1,1,5,5, 6,6,5, 4,4,3,3,  2,2,1, 5,5,4,4, 3,3,2, 
  7.   5,5,4,4, 3,3,2, 1,1,5,5,  6,6,5, 4,4,3,3, 2,2,1, 
  8. }; 
  9.  
  10. // 曲譜時值 
  11. static const uint8_t g_scoreDurations[] = { 
  12.   4,4,4,4,  4,4,8, 4,4,4,4, 4,4,8, 4,4,4,4, 4,4,8, 
  13.   4,4,4,4,  4,4,8, 4,4,4,4, 4,4,8, 4,4,4,4, 4,4,8, 
  14. }; 
  15.  
  16. static void *BeeperMusicTask(const char *arg) 
  17.     (void)arg; 
  18.     printf("BeeperMusicTask start!\r\n"); 
  19.  
  20.     for (size_t i = 0; i < sizeof(g_scoreNotes)/sizeof(g_scoreNotes[0]); i++) { 
  21.         uint32_t tune = g_scoreNotes[i]; // 音符 
  22.         uint16_t freqDivisor = g_tuneFreqs[tune]; 
  23.         uint32_t tuneInterval = g_scoreDurations[i] * (1000 *100); // 音符時間 
  24.         printf("%d %d %d %d\r\n", tune,freqDivisor, PWM_DUTY,tuneInterval); 
  25.         IoTPwmStart(0,PWM_DUTY,freqDivisor); 
  26.         tls_os_time_delay(tuneInterval/1000); 
  27.         IoTPwmStop(0); 
  28.     } 
  29.     return NULL

八、功能展示

​ 以上都完成之后,就可以編譯、燒錄,并測試最后的完成效果。

文章相關附件可以點擊下面的原文鏈接前往下載:

https://harmonyos.51cto.com/resource/1091

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-09-13 10:03:35

鴻蒙HarmonyOS應用

2021-09-08 15:44:56

鴻蒙HarmonyOS應用

2021-10-11 14:14:42

鴻蒙HarmonyOS應用

2011-08-25 18:04:33

iPad應用Little Star親子應用

2022-04-01 15:54:01

DHCP網絡協議開發板

2022-01-07 21:11:27

鴻蒙HarmonyOS應用

2021-05-10 09:40:29

鴻蒙HarmonyOS應用

2022-10-14 15:55:24

環境搭建鴻蒙

2021-12-16 15:14:54

鴻蒙HarmonyOS應用

2023-09-14 15:49:42

PWM鴻蒙

2023-03-02 20:52:11

? PWM脈沖寬度調制

2022-03-03 19:21:50

Harmony鴻蒙操作系統

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2021-08-17 14:40:43

鴻蒙HarmonyOS應用

2021-06-25 15:32:13

鴻蒙HarmonyOS應用

2022-02-24 16:39:41

OpenHarmonNiobe開發鴻蒙

2020-12-16 10:05:48

鴻蒙開發板Onenet平臺

2022-04-14 11:44:25

LiteOS線程鴻蒙

2022-08-19 10:54:47

操作系統鴻蒙
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩爱爱网| 做a视频| 欧美一级黄色网 | 99久久精品免费看国产免费软件 | 中文字幕日韩欧美一区二区三区 | 日韩中文视频 | 精品不卡| 天天操夜夜操 | 免费国产一区二区视频 | 国产2区| 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 欧美久久久 | 欧美一区日韩一区 | 中文字幕亚洲一区二区va在线 | 一区在线视频 | 日日摸天天添天天添破 | 成人精品免费视频 | 国产精品精品久久久 | 天天干天天草 | 亚洲视频免费 | 国产97人人超碰caoprom | 国产成人精品久久二区二区91 | 久久久久亚洲精品 | 亚洲精选一区二区 | 国产欧美精品 | 亚洲精品中文字幕在线观看 | 97国产一区二区 | 成人老司机| 草久视频 | 91pron在线| 国产a区 | 国产电影一区二区 | 婷婷在线网站 | 欧美日一区| 国产98色在线 | 日韩 | 日本午夜免费福利视频 | 在线免费观看黄视频 | 亚洲a毛片| 日本精品久久久久久久 | 少妇淫片aaaaa毛片叫床爽 | 久久久久久免费毛片精品 |