From ff657d83c8f13e40835c6e6bd94cf62e0fe67933 Mon Sep 17 00:00:00 2001 From: liyangyang <941843540@qq.com> Date: Tue, 26 Jul 2022 17:37:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9PWM=E4=BA=92?= =?UTF-8?q?=E8=A1=A5=E8=BE=93=E5=87=BA=E5=8A=9F=E8=83=BD=E7=9A=84=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../programming-manual/device/pwm/pwm.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md b/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md index 001d67d..72d48f1 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md @@ -70,6 +70,24 @@ rt_err_t rt_pwm_set(struct rt_device_pwm *device, | -RT_ENOSYS | 设备操作方法为空 | | 其他错误码 | 执行失败 | +PWM 的通道 channel 可为正数或者负数。因为有的PWM是具有互补输出功能的,也就是说PWM的某一个通道是可以靠两个引脚来发出一对互补的波形。为正数的时候,代表使用PWM的正常输出波形引脚;为负数的时候,代表使用PWM的互补输出波形引脚。 + +```c +/* STM32单片机中实现PWM的通道输出互补波形的函数 */ +HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1); /* 互补输出的引脚产生PWM波 */ +HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); /* 正常输出的引脚产生PWM波 */ +``` + +使用示例如下所示: + +``` c +#define PWM_DEV_CHANNEL 1 /* PWM通道的CH1引脚 */ +#define PWM_DEV_CHANNEL -1 /* PWM通道的CH1N引脚 */ +``` + +> [!NOTE] +> 注:无论我们是设置的是什么通道(CHx或者CHxN),都是在对这个PWM外设进行设置。所以设置其中一个通道必然会对另外一个通道造成影响。 + PWM 的输出频率由周期时间 period 决定,例如周期时间为 0.5ms (毫秒),则 period 值为 500000ns(纳秒),输出频率为 2KHz,占空比为 pulse / period,pulse 值不能超过 period。 使用示例如下所示: @@ -105,6 +123,9 @@ rt_err_t rt_pwm_enable(struct rt_device_pwm *device, int channel); | -RT_ENOSYS | 设备操作方法为空 | | 其他错误码 | 设备使能失败 | +> [!NOTE] +> 注:这个函数并不会使能PWM互补输出的两个引脚,只能使能其中的某一个引脚(CHx或者CHxN)。 + 使用示例如下所示: ```c @@ -140,6 +161,9 @@ rt_err_t rt_pwm_disable(struct rt_device_pwm *device, int channel); | -RT_EIO | 设备句柄为空 | | 其他错误码 | 设备关闭失败 | +> [!NOTE] +> 注:这个函数并不会同时失能PWM互补输出的两个引脚,只能失能其中的某一个引脚(CHx或者CHxN)。 + 使用示例如下所示: ```c -- Gitee From be96b4d3055a386ac3f9eba6fb2492ed2488c7f4 Mon Sep 17 00:00:00 2001 From: liyangyang <941843540@qq.com> Date: Wed, 27 Jul 2022 00:19:16 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=B8=A5=E8=B0=A8=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../programming-manual/device/pwm/pwm.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md b/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md index 72d48f1..a4607b8 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md @@ -70,13 +70,7 @@ rt_err_t rt_pwm_set(struct rt_device_pwm *device, | -RT_ENOSYS | 设备操作方法为空 | | 其他错误码 | 执行失败 | -PWM 的通道 channel 可为正数或者负数。因为有的PWM是具有互补输出功能的,也就是说PWM的某一个通道是可以靠两个引脚来发出一对互补的波形。为正数的时候,代表使用PWM的正常输出波形引脚;为负数的时候,代表使用PWM的互补输出波形引脚。 - -```c -/* STM32单片机中实现PWM的通道输出互补波形的函数 */ -HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1); /* 互补输出的引脚产生PWM波 */ -HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); /* 正常输出的引脚产生PWM波 */ -``` +PWM 的通道 channel 可为正数或者负数。因为有的芯片的PWM是具有互补输出功能的,即PWM的某一个通道是可以靠两个引脚来发出一对互补的波形。当通道号为正数的时候,代表使用PWM的正常输出波形引脚;为其负数的时候,代表使用PWM的互补输出波形引脚。 使用示例如下所示: @@ -85,9 +79,6 @@ HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); /* 正常输出的引脚产生PWM波 */ #define PWM_DEV_CHANNEL -1 /* PWM通道的CH1N引脚 */ ``` -> [!NOTE] -> 注:无论我们是设置的是什么通道(CHx或者CHxN),都是在对这个PWM外设进行设置。所以设置其中一个通道必然会对另外一个通道造成影响。 - PWM 的输出频率由周期时间 period 决定,例如周期时间为 0.5ms (毫秒),则 period 值为 500000ns(纳秒),输出频率为 2KHz,占空比为 pulse / period,pulse 值不能超过 period。 使用示例如下所示: -- Gitee