OpenHarmony API-WifiIotPwmPort PWM 端口(通道) 的枚举值 作者:马育民 • 2025-09-29 11:47 • 阅读:10013 ### 头文件 ```c #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 同时输出不同信号为例: ```c #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 功能,再使用该通道(部分新版本会自动配置,建议提前确认)。 - **合法性检查**:使用前建议判断通道号是否有效,例如: ```c 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 亮度调节等场景。 原文出处:http://www.malaoshi.top/show_1GW1wuP89JXG.html