OpenHarmony API-WifiIotPwmPort PWM 端口(通道) 的枚举值

头文件

#include "wifiiot_pwm.h"  // 新版本 PWM 接口头文件

定义

typedef enum {
    /** PWM0 */
    WIFI_IOT_PWM_PORT_PWM0 = 0,
    /** PWM1 */
    WIFI_IOT_PWM_PORT_PWM1 = 1,
    /** PWM2 */
    WIFI_IOT_PWM_PORT_PWM2 = 2,
    /** PWM3 */
    WIFI_IOT_PWM_PORT_PWM3 = 3,
    /** PWM4 */
    WIFI_IOT_PWM_PORT_PWM4 = 4,
    /** PWM5 */
    WIFI_IOT_PWM_PORT_PWM5 = 5,
    /** Maximum value */
    WIFI_IOT_PWM_PORT_MAX
} WifiIotPwmPort;

说明

标识PWM 端口(通道) 的标准枚举值,用于在 PWM 相关操作(如初始化、启动、停止)中指定目标通道。

枚举值的核心含义

每个枚举值对应芯片上一个独立的 PWM 通道,用于区分不同的硬件 PWM 输出引脚,例如:

  • WIFI_IOT_PWM_PORT_PWM0:第 0 号 PWM 通道(最常用,通常对应固定的物理引脚)
  • WIFI_IOT_PWM_PORT_PWM1:第 1 号 PWM 通道
  • …以此类推,直到 WIFI_IOT_PWM_PORT_PWM5

末尾的 WIFI_IOT_PWM_PORT_MAX 是边界标识,不对应实际通道,主要用途:

  • 表示 PWM 通道的总数上限(例如当前枚举支持最多 6 个通道:PWM0~PWM5)
  • 用于参数合法性检查(如判断用户输入的通道号是否在有效范围内)

关键特性与用途

  • 硬件通道的唯一标识:每个枚举值对应芯片内部一个独立的 PWM 硬件通道,不同通道可同时输出不同频率/占空比的 PWM 信号(互不干扰)。
  • PWM 操作的核心参数:是 PwmInit(初始化)、PwmStart(启动输出)、PwmStop(停止输出)等函数的必传参数,用于指定操作的目标通道。
  • 与物理引脚的绑定:每个 PWM 通道通常绑定到固定的物理引脚(如 PWM0 可能绑定到 GPIO12),具体对应关系需参考开发板的《硬件手册》或引脚定义表。

使用场景

以控制 PWM0 和 PWM1 同时输出不同信号为例:

#include "wifiiot_pwm.h"
#include "ohos_init.h"
#include "unistd.h"

void MultiPwmDemo(void) {
    // 初始化 PWM0 和 PWM1 通道
    PwmInit(WIFI_IOT_PWM_PORT_PWM0);
    PwmInit(WIFI_IOT_PWM_PORT_PWM1);

    // PWM0:输出 1000Hz,占空比 30%(300/1000)
    PwmStart(WIFI_IOT_PWM_PORT_PWM0, 1000, 300);
    // PWM1:输出 500Hz,占空比 70%(350/500)
    PwmStart(WIFI_IOT_PWM_PORT_PWM1, 500, 350);

    // 持续输出 5 秒
    usleep(5000000);

    // 停止所有 PWM 通道
    PwmStop(WIFI_IOT_PWM_PORT_PWM0);
    PwmStop(WIFI_IOT_PWM_PORT_PWM1);
}

// 注册入口函数
SYS_RUN(MultiPwmDemo);

注意事项

  • 硬件支持限制:枚举中定义的通道数(如 PWM0~PWM5)不代表芯片实际支持这么多通道,具体取决于硬件(如 Hi3861 实际仅支持部分通道,如 PWM0)。若使用芯片不支持的通道(如 PWM5),函数会返回错误。
  • 引脚功能冲突:PWM 通道对应的物理引脚可能存在功能复用(如同时支持 GPIO、I2C 等),需通过 IoSetFunc 先将引脚配置为 PWM 功能,再使用该通道(部分新版本会自动配置,建议提前确认)。
  • 合法性检查:使用前建议判断通道号是否有效,例如:
    if (port >= WIFI_IOT_PWM_PORT_MAX) {
        printf("无效的 PWM 通道!\n");
        return;
    }
    

与旧版本的兼容性

在 Code 1.0 等早期版本中,PWM 通道枚举为 HI_PWM_PORT_0、HI_PWM_PORT_1 等,新版本统一为 WIFI_IOT_PWM_PORT_PWMx,两者功能一致,仅命名规范不同,迁移时需注意替换枚举值。

这些枚举值是 OpenHarmony 中 PWM 编程的基础,通过明确的通道标识,使开发者能精准控制不同的 PWM 输出,适用于蜂鸣器发声、电机调速、LED 亮度调节等场景。


原文出处:/show_1GW1wuP89JXG.html