问题描述
文档 显示:
构造函数 pwm = PWM(pin, freq = -1, duty = -1, duty_u16 = -1, duty_ns = -1)
pin: Pin 对象,或者引脚号,驱动自动设置引脚为 PWM 复用功能,具体引脚对应 PWM 请参考 引脚复用
我理解为,pin参数要么是 Pin 对象,要么是引脚编号。
但是文档的示例代码为:
# Initialize PWM with 50% duty
try:
if CONSTRUCT_WITH_FPIOA:
# 使用FPIOA 配置引脚复用为PWM, 构造时传入 channel
fpioa = FPIOA()
fpioa.set_function(PWM_PIN, fpioa.PWM0 + PWM_CHANNEL)
pwm = PWM(PWM_CHANNEL, freq=TEST_FREQ, duty=50)
else:
# 直接传入引脚
pwm = PWM(PWM_PIN, freq=TEST_FREQ, duty=50)
except Exception:
print("FPIOA setup skipped or failed")
从示例代码看,PWM类的构造函数的pin参数,可以是 pwm channel,也就是0-5(对于K230D),也可以是引脚编号。
但是我实际使用的时候,除非传入 pwm channel,否则就会报错 ValueError: invalid channel
还有,freq 参数不能写参数名,否则就报错 TypeError: function missing 1 required positional arguments
对于一个开发人员来说,最重要的参考就是文档,但是这个文档和示例代码和实际情况三者哪哪都对不上,实在无语。。
硬件板卡
硬件是 正点原子的 K230D BOX
软件版本
CanMV IDE K230 4.0.9-0