machine 模块下的 PWM 类用法问题

Viewed 34

问题描述


文档 显示:
构造函数 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

其他信息


image.png

2 Answers

你好,请升级固件到V1.4.

文档默认要切换对应最新的固件,如果使用的是旧版固件,需要看对应版本的文档。