当前位置: 首页 > 科技观察

OpenHarmonyNeptune开发板PWM驱动玩转《小星星》

时间:2023-03-11 20:46:57 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com本文介绍如何在Neptune开发板上使用openHarmonyIoT的PWM硬件子系统接口驱动蜂鸣器播放音乐。一、环境准备1.1开发环境、编译环境搭建,参考官方文档,参考链接如下:Neptune开发板环境搭建与使用1.2Neptune开发板openharmonyV1.1.0LTS版本获取:gitclonehttps://gitee。com/hihopeorg_group/neptune-harmony-os1.1-iot.git二、材料准备1.NeptuneHarmonyOSIOT模块2.无源蜂鸣器模块3.若干杜邦线3.相关基础知识介绍HarmonyOSIoT硬件子系统提供一些外设-相关接口位于目录:base/iot_hardware/peripheral/interfaces/kitsPWM相关接口,接口头文件为iot_pwm.h,带PWM输出方波的API:unsignedintIoTPwmStart(unsignedintport,unsignedshortduty,unsignedintfreq);接口参数介绍:(这个和HI3861不同,它的适配是使用W800SDK中的PWM接口,需要了解的可以自行查看)freq:IoTPwmStart接口中的freq参数实际为方波频率PWM输出(频率范围0~65535)Duty:IoTPwmStart接口的duty参数是控制输出方波占空比的参数。占空比是指PWM输出的方波波形的高电平时间与整个方波周期的比值。具体的占空比值是duty/256的比值,比如要输出占空比为50%的方波信号,那么dutyfill值就应该是128。4.音符与频率的对应关系5.准备乐谱为了代码更容易实现,我选择了《小星星》的乐谱作为素材,在乐谱网上找到了乐谱:6.乐谱说明------参考徐思维老师鸿蒙操作系统在蜂鸣器上播放歌曲《两只老虎》7.编写代码有了以上知识,我们就可以编写代码了。关键代码如下:#definePWM_DUTY128staticconstuint16_tg_tuneFreqs[]={523,587,659,698,784,880,988};//得分笔记staticconstuint8_tg_scoreNotes[]={1,1,5,5,6,6,5,4,4,3,3,2,2,1,5,5,4,4,3,3,2,5,5,4,4,3,3,2,1,1,5,5,6,6,5,4,4,3,3,2,2,1,};//得分时长staticconstuint8_tg_scoreDurations[]={4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,};staticvoid*BeeperMusicTask(constchar*arg){(void)arg;printf("BeeperMusicTaskstart!\r\n");for(size_ti=0;i