外观
PWM 使用示例
2025-10-29
概述
本文介绍了如何在 RuiChing Studio 中创建一个 pwm 示例工程,并将其编译后在开发板上调试运行。旨在帮助读者进一步熟悉 RuiChing Studio 开发环境,掌握 pwm 的基本配置与使用方法,以及命令的创建和运用。
pwm 框架
pwm 框架是 RT-Thread 中用于管理 pwm 的核心框架。在 RT-Thread 中,pwm 框架提供使能/失能、设置脉冲宽度频率等功能,支持通过标准化接口实现 pwm 的管理与操作。
输出 pwm 波形
本示例将在 while 循环里每 50 毫秒修改一次脉冲宽度,提供逻辑分析仪抓取 pwm 波形图。
引脚连接
逻辑分析仪的捕获引脚连接到开发板的 GPIO0_C2 引脚:

创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

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

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

创建完成。

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

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

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

固件下载点击展开
固化设备树

固化 APP

核心示例代码
pwm 示例相关 API
rt_device_find:查找 pwm 设备;rt_pwm_set:设置 pwm 周期和宽度;rt_pwm_enable:使能 pwm 输出;
applications/main.c
static void pwm_sample(void)
{
struct rt_device_pwm *pwm_dev;
rt_uint32_t period = INITIAL_PERIOD;
rt_uint32_t pulse = INITIAL_PULSE;
rt_bool_t increasing = RT_TRUE;
// 查找 pwm 设备
pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
if (pwm_dev == RT_NULL)
{
rt_kprintf(
"PWM example failed! PWM Device %s not found!\n", PWM_DEV_NAME);
return;
}
// 设置 pwm 周期和宽度
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
while (1)
{
rt_thread_mdelay(50);
pulse += increasing ? PULSE_STEP : -PULSE_STEP;
if (pulse >= period)
{
increasing = RT_FALSE;
pulse = period;
}
else if (pulse == 0)
{
increasing = RT_TRUE;
}
// 动态调整 pwm 宽度
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
}
}运行示例
操作步骤
- 将程序下载到开发板
- 将逻辑分析仪的捕获引脚连接到开发板的 GPIO0_C2 引脚
- 观察逻辑分析仪上的波形变化
预期结果
开发板运行程序后,PWM 会自动输出波形,脉冲宽度在 50 毫秒内逐渐变化。

