OpenHarmony Neptune开发板PWM驱动 播放《小星星》 原创 精华

远道可思
发布于 2021-8-31 20:22
浏览
3收藏

  本文介绍如何在Neptune开发板上,使用openHarmony IoT硬件子系统的PWM接口 驱动蜂鸣器 播放音乐。

 

1.环境准备

1.1 开发环境、编译环境搭建,参考官方文档,参考链接如下:

Neptune开发板的环境搭建及使用

1.2 Neptune开发板 openharmony V1.1.0 LTS 版本获取:

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

2.材料准备

1、Neptune HarmonyOS物联网 IOT模组

2、无源蜂鸣器模块

3、杜邦线若干

 

3.相关基础知识介绍

鸿蒙系统IoT硬件子系统提供了一些外设相关的接口,目录位于:

base/iot_hardware/peripheral/interfaces/kits

PWM相关接口,接口头文件为iot_pwm.h,其中用PWM输出方波的API:

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;

 

4.音符-频率对应关系

OpenHarmony Neptune开发板PWM驱动 播放《小星星》-鸿蒙开发者社区5.准备曲谱
为了代码实现起来简单,我选择了《小星星》的曲谱作为素材,在简谱网找到了简谱:

OpenHarmony Neptune开发板PWM驱动 播放《小星星》-鸿蒙开发者社区

6.简谱说明------参考许思维老师用鸿蒙OS在蜂鸣器上播放一曲《两只老虎》

7.编写代码

有了以上知识,我们就可以编写代码了,关键代码如下:

#define PWM_DUTY 128
static const uint16_t g_tuneFreqs[] = { 523,587,659,698,784,880,988};

// 曲谱音符
static const uint8_t g_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,
};

// 曲谱时值
static const uint8_t g_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,
};

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

    for (size_t i = 0; i < sizeof(g_scoreNotes)/sizeof(g_scoreNotes[0]); i++) {
        uint32_t tune = g_scoreNotes[i]; // 音符
        uint16_t freqDivisor = g_tuneFreqs[tune];
        uint32_t tuneInterval = g_scoreDurations[i] * (1000 *100); // 音符时间
        printf("%d %d %d %d\r\n", tune,freqDivisor, PWM_DUTY,tuneInterval);
        IoTPwmStart(0,PWM_DUTY,freqDivisor);
        tls_os_time_delay(tuneInterval/1000);
        IoTPwmStop(0);
    }
    return NULL;
}

 7.功能展示
​ 以上都完成之后,就可以编译、烧录,并测试最后的完成效果。

 

 

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
pwm_music_demo.rar 1.09K 54次下载
已于2021-8-31 22:08:24修改
3
收藏 3
回复
举报
1条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

楼主的视频链接我也在1楼贴下:https://harmonyos.51cto.com/show/8158,可以说非常还原了

已于2021-9-1 10:08:14修改
回复
2021-9-1 10:07:59
回复
    相关推荐