pwm
PWM (Pulse Width Modulation) 提供脉冲宽度调制输出功能,支持多通道配置、分组同步启停和占空比动态更新。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| 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
头文件清单
功能说明
- 初始化PWM模块,完成模块运行前的准备工作
- 重复调用时返回成功,不重复初始化
- 初始化后方可调用其他PWM接口
前置条件
- 调用时序约束:当前接口为PWM模块首个需调用的接口,其他PWM接口须在本接口成功返回后调用
- 依赖关系:当前接口依赖硬件PWM外设时钟可用
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 初始化成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_DRIVER_SUPPORT_PWM | 编译参与宏 | 控制pwm.c参与编译 | n |
uapi_pwm_deinit
头文件清单
功能说明
- 去初始化PWM模块,关闭所有已打开的PWM通道
- 未初始化时直接返回
- 去初始化后所有PWM通道不可使用,须重新初始化
前置条件
- 调用时序约束:当前接口须在uapi_pwm_init()成功返回后调用
- 依赖关系:当前接口依赖PWM模块已初始化
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_DRIVER_SUPPORT_PWM | 编译参与宏 | 控制pwm.c参与编译 | n |
uapi_pwm_open
头文件清单
功能说明
- 打开指定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
头文件清单
功能说明
- 关闭指定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
头文件清单
功能说明
- 启动指定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
头文件清单
功能说明
- 获取指定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
头文件清单
功能说明
- 停止正在运行的指定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
头文件清单
功能说明
- 更新已打开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
头文件清单
功能说明
- 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
头文件清单
功能说明
- 为指定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
头文件清单
功能说明
- 去注册指定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
头文件清单
功能说明
- 将多个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
头文件清单
功能说明
- 清除指定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
头文件清单
功能说明
- 启动指定分组中所有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
头文件清单
功能说明
- 停止指定分组中所有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
头文件清单
功能说明
- 更新指定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
头文件清单
功能说明
- 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
头文件清单
功能说明
- 挂起所有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
头文件清单
功能说明
- 恢复所有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公共基础类型]
使用说明
作为PWM接口的返回值类型,表示操作结果错误码。[SDK公共基础类型]
pwm_callback_t
使用说明
作为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为单次输出 |