外观
PWM 脉冲宽度调制示例
2026-07-08
概述
本文介绍如何在 睿擎工业开发平台 中创建并运行 PWM 脉冲宽度调制 示例工程。通过驱动 TL3576 平台内置 PWM 定时器,演示了利用 RT-Thread 设备驱动框架进行 PWM 设备操作的完整流程。
PWM 框架
PWM(脉冲宽度调制)是 RT-Thread 中用于管理脉冲宽度调制波形的核心框架。它提供使能/失能、设置周期与占空比等功能,支持通过标准化接口实现 PWM 设备的管理与操作。通过配置 PWM 的频率和占空比,可以精确控制电机转速、LED 亮度、蜂鸣器音调等应用场景。
硬件连接
- 使用示波器或逻辑分析仪的探头连接到开发板的
GPIO2_D6引脚

- 公共地线连接到开发板的 GND 引脚

查询手册获取 PWM 引脚复用
根据 TL3576 技术参考手册(TRM)可知:
- PWM2 外设支持多路通道输出,本示例使用
channel 6 - 对应的硬件引脚为
GPIO2_D6,需在设备树中配置引脚复用为 PWM 功能 - 输出频率范围为数十 Hz ~ 数十 MHz,本示例配置周期
1 ms(1 kHz),初始脉宽100 μs
构建与烧录
创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化驱动

固化 APP

核心示例代码
PWM 示例相关 API
rt_device_find:查找 PWM 设备;rt_device_control+PWM_CMD_SET:设置 PWM 周期和脉冲宽度;rt_device_control+PWM_CMD_ENABLE:使能 PWM 通道输出;
pwm_example.c
#define TEST_PWM_NAME "pwm2" // PWM 设备名
#define TEST_PWM_CHANNEL 6 // PWM 通道号
#define TEST_PERIOD_NS 1000000 // 周期 1 ms
#define TEST_PULSE_NS 100000 // 脉宽 100 μs
int pwm_test(int argc, char **argv)// PWM 测试入口函数
{
rt_device_t pwm_dev = RT_NULL;
rt_err_t result = RT_EOK;
struct rt_pwm_configuration pwm_cfg;
rt_kprintf("[PWM Control] Finding device: %s...\n", TEST_PWM_NAME);
pwm_dev = rt_device_find(TEST_PWM_NAME);// 查找 PWM 设备
if (pwm_dev == RT_NULL)
{
rt_kprintf("[PWM Control] Error: Cannot find %s!\n", TEST_PWM_NAME);
return -RT_ERROR;
}
rt_memset(&pwm_cfg, 0, sizeof(struct rt_pwm_configuration));
pwm_cfg.channel = TEST_PWM_CHANNEL;
pwm_cfg.period = TEST_PERIOD_NS;
pwm_cfg.pulse = TEST_PULSE_NS;
pwm_cfg.complementary = RT_FALSE;
pwm_cfg.polarity = 0;
pwm_cfg.aligned = 0;
rt_kprintf("[PWM Control] Applying: Period=%dns, Pulse=%dns\n",
TEST_PERIOD_NS, TEST_PULSE_NS);
result = rt_device_control(pwm_dev, PWM_CMD_SET, &pwm_cfg);// 设置周期与脉宽
if (result != RT_EOK)
{
rt_kprintf("[PWM Control] Error: PWM_CMD_SET Failed! code: %d\n", result);
return result;
}
rt_kprintf("[PWM Control] Enabling channel %d...\n", TEST_PWM_CHANNEL);
result = rt_device_control(pwm_dev, PWM_CMD_ENABLE, &pwm_cfg);// 使能 PWM 输出
if (result != RT_EOK)
{
rt_kprintf("[PWM Control] Error: PWM_CMD_ENABLE Failed!\n");
return result;
}
rt_kprintf("[PWM Control] Success. Outputting active wave...\n");
return RT_EOK;
}运行示例
操作步骤
- 将程序下载到开发板
- 将示波器或逻辑分析仪的探头连接到
GPIO2_D6引脚 - 打开串口终端连接开发板
- 在终端输入
pwm_test命令运行 - 观察示波器上输出的 PWM 波形
预期结果
验证 TL3576 开发板的 PWM 外设基本输出功能正常,输出频率为 1 kHz、占空比 10% 的方波信号。
RT-Thread 终端
msh />pwm_test
[PWM Control] Finding device: pwm2...
[PWM Control] Applying: Period=1000000ns, Pulse=100000ns
[PWM Control] Enabling channel 6...
[PWM Control] Success. Outputting active wave...使用逻辑分析仪测量 GPIO2_D6 引脚,应观察到:

