OpenHarmony鸿蒙硬件-控制蜂鸣器播放声音

蜂鸣器介绍

https://www.malaoshi.top/show_1GW1wtTYVAmV.html

开发

步骤

  1. 并初始化
  2. 循环调用PwmStart、PwmStop方法
  3. 配置模块构建脚本
  4. 配置模块到应用子系统
  5. 启用PWM功能(关键)

代码

创建文件 beeper_demo.c

代码如下:

#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
#include "wifiiot_pwm.h"
#include "hi_pwm.h"
void init(void)
{
    GpioInit();
    // 蜂鸣器引脚 设置为 PWM功能
    IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_PWM0_OUT);
    PwmInit(WIFI_IOT_PWM_PORT_PWM0);
}

void BeeperDemo(void)
{
    init();
    while (1)
    {
        uint16_t freqDivisor = 34052;
        //占空比,频率
        PwmStart(WIFI_IOT_PWM_PORT_PWM0, freqDivisor / 2, freqDivisor);
        usleep(2000000);
        PwmStop(WIFI_IOT_PWM_PORT_PWM0);
        usleep(1000000);
    } 
}
SYS_RUN(BeeperDemo);

代码解释

  • GpioInit():初始化GPIO设备,详见链接
  • IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_PWM0_OUT):设置GPIO 9引脚功能,详见链接

    • WIFI_IOT_IO_NAME_GPIO_9:详见链接
    • WIFI_IOT_IO_FUNC_GPIO_9_PWM0_OUT:详见链接
  • PwmInit(WIFI_IOT_PWM_PORT_PWM0):详见链接

    • WIFI_IOT_PWM_PORT_PWM0:详见链接
  • PwmStart(WIFI_IOT_PWM_PORT_PWM0, freqDivisor / 2, freqDivisor):详见链接

  • usleep(1000 * 1000):详见链接

  • PwmStop(WIFI_IOT_PWM_PORT_PWM0):详见链接

编辑BUILD.gn文件

编辑1

在代码同级目录创建下面文件:

BUILD.gn

内容:

static_library("traffic_demo") { 
    sources = [ 
        # "led_demo.c" 
        # "traffic_light_demo.c" 
        "beeper_music_demo.c",
    ]
    include_dirs = [
        "//utils/native/lite/include",
        "//base/iot_hardware/interfaces/kits/wifiiot_lite",
        "//kernel/liteos_m/components/cmsis/2.0",
    ] 
}

编辑2

编辑下面文件:

\\applications\sample\wifi-iot\app\BUILD.gn

内容:

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

lite_component("app") {
    features = [
        "code_v2.0/std_03:hello_demo",
    ]
}

启用PWM功能

OpenHarmony鸿蒙硬件-启用PWM功能(关键)

编译代码

详见链接:
https://www.malaoshi.top/show_1GW1wTyUOMPk.html

烧写固件到芯片

详见链接:
https://www.malaoshi.top/show_1GW1wWWflGbq.html


原文出处:/show_1GW1wtUGdpYZ.html