跳转至

pwm

PWM (Pulse Width Modulation) 提供脉冲宽度调制输出功能,支持多通道配置、分组同步启停和占空比动态更新。

头文件清单

#include "include/driver/pwm.h"

接口清单

接口名称 功能简述
uapi_pwm_init 初始化PWM模块
uapi_pwm_deinit 去初始化PWM模块
uapi_pwm_open 打开指定PWM通道并配置参数
uapi_pwm_close 关闭指定PWM通道
uapi_pwm_start 启动指定PWM通道输出
uapi_pwm_get_frequency 获取PWM工作频率
uapi_pwm_stop 停止正在运行的PWM通道
uapi_pwm_update_duty_ratio 更新PWM占空比
uapi_pwm_isr PWM中断服务例程
uapi_pwm_register_interrupt 注册PWM中断回调
uapi_pwm_unregister_interrupt 去注册PWM中断回调
uapi_pwm_set_group 设置PWM通道分组
uapi_pwm_clear_group 清除PWM通道分组
uapi_pwm_start_group 启动指定分组的PWM
uapi_pwm_stop_group 停止指定分组的PWM
uapi_pwm_update_cfg 更新指定PWM通道配置
uapi_pwm_config_preload PWM预配置
uapi_pwm_suspend 挂起所有PWM通道(低功耗模式)
uapi_pwm_resume 恢复所有PWM通道(低功耗模式)

Functions

uapi_pwm_init

errcode_t uapi_pwm_init(void)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 初始化PWM模块,完成模块运行前的准备工作
  • 重复调用时返回成功,不重复初始化
  • 初始化后方可调用其他PWM接口

前置条件

  • 调用时序约束:当前接口为PWM模块首个需调用的接口,其他PWM接口须在本接口成功返回后调用
  • 依赖关系:当前接口依赖硬件PWM外设时钟可用

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 初始化成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n

uapi_pwm_deinit

void uapi_pwm_deinit(void)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 去初始化PWM模块,关闭所有已打开的PWM通道
  • 未初始化时直接返回
  • 去初始化后所有PWM通道不可使用,须重新初始化

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:当前接口依赖PWM模块已初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n

uapi_pwm_open

errcode_t uapi_pwm_open(uint8_t channel, const pwm_config_t *cfg)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 打开指定PWM通道,设置低电平时间、高电平时间、相位偏移、重复周期及连续输出标志
  • 若通道已打开,先关闭再重新打开
  • 打开后可通过uapi_pwm_register_interrupt注册自定义中断回调

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:通道号有效且cfg指针非空

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)
cfg const pwm_config_t * PWM配置信息指针 非NULL

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 通道打开成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围或cfg为NULL或cycles > 32767
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n
CONFIG_PWM_SUPPORT_LPM 特性宏 支持PWM低功耗特性 n

uapi_pwm_close

errcode_t uapi_pwm_close(uint8_t channel)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 关闭指定PWM通道,停止该通道的波形输出
  • 关闭后通道不可再使用,需重新打开
  • 若通道正在运行,关闭时会先停止通道输出

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:指定通道须已通过uapi_pwm_open()打开

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 通道关闭成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
ERRCODE_PWM_NOT_OPEN(0x80001081) 通道未打开 指定通道未打开
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n
CONFIG_PWM_SUPPORT_LPM 特性宏 支持PWM低功耗特性 n

uapi_pwm_start

errcode_t uapi_pwm_start(uint8_t channel)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 启动指定PWM通道输出波形
  • V150版本直接启动单通道
  • V151/V152版本通过分组启动

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:指定通道须已通过uapi_pwm_open()打开

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 启动成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围或未找到分组
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
ERRCODE_PWM_NOT_OPEN(0x80001081) 通道未打开 指定通道未打开
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V150 功能宏 支持PWM V150接口功能 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n

uapi_pwm_get_frequency

uint32_t uapi_pwm_get_frequency(uint8_t channel)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 获取指定PWM通道的工作频率,单位为HZ
  • 返回值用于计算实际高低电平时间
  • 频率值为PWM工作时钟的输出频率

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:当前接口依赖PWM模块已初始化

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)

返回值

  • 返回类型:uint32_t
返回值 文字含义 触发场景
uint32_t PWM工作频率(HZ) 正常获取

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n

uapi_pwm_stop

errcode_t uapi_pwm_stop(uint8_t channel)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 停止正在运行的指定PWM通道
  • 仅V150版本可用
  • 停止后通道仍处于打开状态,可再次启动

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:指定通道须已通过uapi_pwm_open()打开且CONFIG_PWM_USING_V150已开启

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 停止成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
ERRCODE_PWM_NOT_OPEN(0x80001081) 通道未打开 指定通道未打开
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V150 功能宏 支持PWM V150接口功能 n

uapi_pwm_update_duty_ratio

errcode_t uapi_pwm_update_duty_ratio(uint8_t channel, uint32_t low_time, uint32_t high_time)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 更新已打开PWM通道的占空比,设置低电平和高电平时间计数
  • 仅V150版本可用
  • 实际低电平时间 = low_time * Tus,实际高电平时间 = high_time * Tus

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:指定通道须已通过uapi_pwm_open()打开且CONFIG_PWM_USING_V150已开启

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)
low_time uint32_t PWM工作时钟周期计数个数低电平部分 频率参考uapi_pwm_get_frequency()
high_time uint32_t PWM工作时钟周期计数个数高电平部分 频率参考uapi_pwm_get_frequency()

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 更新成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
ERRCODE_PWM_NOT_OPEN(0x80001081) 通道未打开 指定通道未打开
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V150 功能宏 支持PWM V150接口功能 n
CONFIG_PWM_SUPPORT_LPM 特性宏 支持PWM低功耗特性 n

uapi_pwm_isr

errcode_t uapi_pwm_isr(uint8_t channel)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • PWM中断服务例程,清除指定通道的中断标志
  • 由中断处理框架调用,非用户主动调用
  • 中断清除后可再次触发中断

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 上下文限制:当前接口在中断上下文中调用

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 中断清除成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n

uapi_pwm_register_interrupt

errcode_t uapi_pwm_register_interrupt(uint8_t channel, pwm_callback_t callback)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 为指定PWM通道注册中断回调函数
  • 注册后,当PWM周期完成中断触发时调用该回调
  • 同一通道重复注册会覆盖前一次回调

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:指定通道须已通过uapi_pwm_open()打开

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)
callback pwm_callback_t 中断回调函数指针 非NULL

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 注册成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
ERRCODE_PWM_NOT_OPEN(0x80001081) 通道未打开 指定通道未打开
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_SUPPORT_LPM 特性宏 支持PWM低功耗特性 n

uapi_pwm_unregister_interrupt

errcode_t uapi_pwm_unregister_interrupt(uint8_t channel)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 去注册指定PWM通道的中断回调函数
  • 去注册后,该通道不再触发回调通知
  • 去注册后中断仍会产生,仅回调不再被调用

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:指定通道须已通过uapi_pwm_open()打开

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 去注册成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
ERRCODE_PWM_NOT_OPEN(0x80001081) 通道未打开 指定通道未打开
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_SUPPORT_LPM 特性宏 支持PWM低功耗特性 n

uapi_pwm_set_group

errcode_t uapi_pwm_set_group(uint8_t group, const uint8_t *channel_set, uint32_t channel_set_len)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 将多个PWM通道设置为同一分组,同组通道可同步启动和停止
  • 同一通道不可重复加入不同分组
  • 仅V151/V152版本可用

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:CONFIG_PWM_USING_V151或CONFIG_PWM_USING_V152已开启

入参

名称 参数类型 详细说明 约束取值范围
group uint8_t PWM分组ID 0 ~ CONFIG_PWM_GROUP_NUM-1
channel_set const uint8_t * 通道集合数组指针 非NULL
channel_set_len uint32_t 通道集合长度 > 0

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 分组设置成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 分组号超范围或channel_set为NULL或长度为0或通道已在其他分组
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n

uapi_pwm_clear_group

errcode_t uapi_pwm_clear_group(uint8_t group)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 清除指定PWM分组中的所有通道配置
  • 清除后分组内通道不再关联该分组
  • 仅V151/V152版本可用

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:CONFIG_PWM_USING_V151或CONFIG_PWM_USING_V152已开启

入参

名称 参数类型 详细说明 约束取值范围
group uint8_t PWM分组ID 0 ~ CONFIG_PWM_GROUP_NUM-1

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 清除成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 分组号超范围
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n

uapi_pwm_start_group

errcode_t uapi_pwm_start_group(uint8_t group)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 启动指定分组中所有PWM通道的输出
  • 分组内通道同步启动
  • 仅V151/V152版本可用

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:分组须已通过uapi_pwm_set_group()设置且CONFIG_PWM_USING_V151或CONFIG_PWM_USING_V152已开启

入参

名称 参数类型 详细说明 约束取值范围
group uint8_t PWM分组ID 0 ~ CONFIG_PWM_GROUP_NUM-1

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 启动成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 分组号超范围
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n

uapi_pwm_stop_group

errcode_t uapi_pwm_stop_group(uint8_t group)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 停止指定分组中所有PWM通道的输出
  • 分组内通道同步停止
  • 仅V151/V152版本可用

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:分组须已通过uapi_pwm_set_group()设置且CONFIG_PWM_USING_V151或CONFIG_PWM_USING_V152已开启

入参

名称 参数类型 详细说明 约束取值范围
group uint8_t PWM分组ID 0 ~ CONFIG_PWM_GROUP_NUM-1

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 停止成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 分组号超范围
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n

uapi_pwm_update_cfg

errcode_t uapi_pwm_update_cfg(uint8_t channel, const pwm_config_t *cfg)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 更新指定PWM通道的完整配置参数,包括低电平时间、高电平时间、相位偏移、重复周期和连续输出标志
  • 更新后立即刷新生效
  • 仅V151/V152版本可用

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:指定通道须已通过uapi_pwm_open()打开且CONFIG_PWM_USING_V151或CONFIG_PWM_USING_V152已开启

入参

名称 参数类型 详细说明 约束取值范围
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)
cfg const pwm_config_t * PWM配置信息指针 非NULL

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 更新成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围或cfg参数无效或cycles > 32767
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
ERRCODE_PWM_NOT_OPEN(0x80001081) 通道未打开 指定通道未打开
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n
CONFIG_PWM_SUPPORT_LPM 特性宏 支持PWM低功耗特性 n

uapi_pwm_config_preload

errcode_t uapi_pwm_config_preload(uint8_t group, uint8_t channel, const pwm_config_t *cfg)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • PWM预配置,当上一个PWM配置完成时此配置会自动加载
  • 实现无缝波形切换
  • 仅V151/V152版本且CONFIG_PWM_PRELOAD已开启时可用

前置条件

  • 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
  • 依赖关系:指定通道须已通过uapi_pwm_open()打开且CONFIG_PWM_USING_V151或CONFIG_PWM_USING_V152及CONFIG_PWM_PRELOAD已开启

入参

名称 参数类型 详细说明 约束取值范围
group uint8_t PWM分组ID 0 ~ CONFIG_PWM_GROUP_NUM-1
channel uint8_t PWM通道号 PWM_0(0) / PWM_1(1) / PWM_2(2) / PWM_3(3) / PWM_4(4) / PWM_5(5)
cfg const pwm_config_t * PWM配置信息指针 非NULL

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 预配置成功
ERRCODE_PWM_INVALID_PARAMETER(0x80001082) 参数无效 通道号超范围或分组号超范围或cfg为NULL或cycles > 32767
ERRCODE_PWM_NOT_INIT(0x80001080) 未初始化 PWM模块未初始化
ERRCODE_PWM_NOT_OPEN(0x80001081) 通道未打开 指定通道未打开
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_USING_V151 功能宏 支持PWM V151接口功能 n
CONFIG_PWM_USING_V152 功能宏 支持PWM V152接口功能 n
CONFIG_PWM_PRELOAD 功能宏 支持PWM预配置功能 n
CONFIG_PWM_SUPPORT_LPM 特性宏 支持PWM低功耗特性 n

uapi_pwm_suspend

errcode_t uapi_pwm_suspend(uintptr_t arg)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 挂起所有PWM通道,用于低功耗模式
  • 由电源管理框架调用
  • 挂起后PWM通道停止输出

前置条件

  • 调用时序约束:CONFIG_PWM_SUPPORT_LPM已开启
  • 依赖关系:当前接口由电源管理框架调用

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 挂起参数 -

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 挂起成功

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_SUPPORT_LPM 功能宏 支持PWM低功耗挂起/恢复功能 n

uapi_pwm_resume

errcode_t uapi_pwm_resume(uintptr_t arg)

头文件清单

#include "include/driver/pwm.h"

功能说明

  • 恢复所有PWM通道,从低功耗模式恢复后重新初始化并还原配置
  • 由电源管理框架调用
  • 恢复后已打开的通道恢复输出

前置条件

  • 调用时序约束:CONFIG_PWM_SUPPORT_LPM已开启且已调用uapi_pwm_suspend()
  • 依赖关系:当前接口由电源管理框架调用

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 恢复参数 -

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 恢复成功

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PWM 编译参与宏 控制pwm.c参与编译 n
CONFIG_PWM_SUPPORT_LPM 功能宏 支持PWM低功耗挂起/恢复功能 n
CONFIG_PWM_USING_V151 特性宏 支持PWM V151分组恢复特性 n
CONFIG_PWM_USING_V152 特性宏 支持PWM V152分组恢复特性 n

Type definitions

errcode_t [SDK公共基础类型]

typedef uint32_t errcode_t;

使用说明

作为PWM接口的返回值类型,表示操作结果错误码。[SDK公共基础类型]

pwm_callback_t

typedef errcode_t (*pwm_callback_t)(uint8_t channel);

使用说明

作为uapi_pwm_register_interrupt的回调函数参数类型。调用时机:PWM周期完成中断触发时,由中断处理函数调用(uapi_pwm_isr内部清除中断标志后,通过hal_pwm_register_callback注册的回调被调用)。参数channel为触发中断的PWM通道号。回调返回的errcode_t在当前实现的中断调用点被丢弃,不做错误检查。

Enumerations

pwm_channel_t

typedef enum {
    PWM_0,                  /* < PWM Peripheral 0. */
    PWM_1,                  /* < PWM Peripheral 1. */
    PWM_2,                  /* < PWM Peripheral 2. */
    PWM_3,                  /* < PWM Peripheral 3. */
    PWM_4,                  /* < PWM Peripheral 4. */
    PWM_5,                  /* < PWM Peripheral 5. */
    PWM_NONE = CONFIG_PWM_CHANNEL_NUM
} pwm_channel_t;
枚举成员 取值 描述
PWM_0 0 PWM外设0
PWM_1 1 PWM外设1
PWM_2 2 PWM外设2
PWM_3 3 PWM外设3
PWM_4 4 PWM外设4
PWM_5 5 PWM外设5
PWM_NONE CONFIG_PWM_CHANNEL_NUM 无效通道标识

Structures

pwm_config_t

typedef struct pwm_config {
    uint32_t low_time;               /*!< PWM工作时钟周期计数个数低电平部分,
                                                  频率参考 uapi_pwm_get_frequency()。
                                                  如果PWM工作周期为Tus, 实际低电平时间 = low_time * Tus */
    uint32_t high_time;              /*!< PWM工作时钟周期计数个数高电平部分,
                                                  频率参考 uapi_pwm_get_frequency()。
                                                  如果PWM工作周期为Tus, 实际高电平时间 = high_time * Tus */
    uint32_t offset_time;            /*!< PWM相位。 */
    uint16_t cycles;                 /*!< PWM重复周期,范围:0~32767 (15bit)。 */
    bool repeat;                     /*!< 指示PWM应连续输出的标志。 */
} pwm_config_t;

成员说明

成员名称 数据类型 描述
low_time uint32_t PWM工作时钟周期计数个数低电平部分,实际低电平时间 = low_time * Tus
high_time uint32_t PWM工作时钟周期计数个数高电平部分,实际高电平时间 = high_time * Tus
offset_time uint32_t PWM相位偏移
cycles uint16_t PWM重复周期,范围:0~32767
repeat bool 连续输出标志,true为连续输出,false为单次输出

Macros

ERRCODE_SUCC [SDK公共共享宏]

#define ERRCODE_SUCC                                        0UL

ERRCODE_PWM_NOT_INIT

#define ERRCODE_PWM_NOT_INIT                                0x80001080

ERRCODE_PWM_NOT_OPEN

#define ERRCODE_PWM_NOT_OPEN                                0x80001081

ERRCODE_PWM_INVALID_PARAMETER

#define ERRCODE_PWM_INVALID_PARAMETER                       0x80001082

ERRCODE_PWM_REG_ADDR_INVALID

#define ERRCODE_PWM_REG_ADDR_INVALID                        0x80001083

ERRCODE_PWM_NOT_POWER_ON

#define ERRCODE_PWM_NOT_POWER_ON                            0x80001084