class PWM -- 脉冲宽度调制¶
PWM 类在 Pin 上输出脉冲宽度调制信号。它是现代的、跨端口的 PWM API;在 STM32 OpenMV 摄像头上,它封装了底层的 pyb.Timer 通道机制,因此每个 PWM 实例会占用一个定时器通道。
用法示例:
from machine import PWM, Pin
# 50 Hz PWM on a header pin with a 12.5 % duty.
pwm = PWM(Pin("P7"), freq=50, duty_u16=8192)
pwm.duty_u16(32768) # change duty to 50 %
pwm.init(freq=5000, duty_ns=5000) # re-init at 5 kHz, 5 us pulse
pwm.duty_ns(3000) # 3 us pulse
pwm.deinit()
构造函数¶
- class machine.PWM(dest: Pin | int, *, freq: int | None = None, duty_u16: int | None = None, duty_ns: int | None = None, invert: bool = False)¶
构造一个驱动
dest(OpenMV 摄像头上的一个Pin)的PWM对象。这些关键字参数等同于在构造后立即调用init():freq——以 Hz 为单位的 PWM 频率。duty_u16——以duty_u16 / 65535比率表示的占空比。duty_ns——以纳秒为单位的脉冲宽度。invert——如果为True,则反转输出极性。
一次最多只能传入
duty_u16/duty_ns中的一个。设置freq可能会影响共享同一底层定时器的其他PWM实例(在 STM32 上确实如此——给定 TIM 的每个通道都以相同的频率运行)。方法¶
- init(*, freq: int | None = None, duty_u16: int | None = None, duty_ns: int | None = None) None¶
重新配置 PWM 输出。只有提供的参数会被更新;其余参数保留之前的值。各参数的含义请参阅构造函数。
- freq() int¶
- freq(value: int, /) None
获取或设置 PWM 频率。
不带参数时,返回当前频率(Hz)。
带单个
value参数时,将频率设置为该值(Hz)。如果频率超出底层定时器可实现的范围,可能会引发ValueError。