pwm - PWM模块#

示例

-- 本库支持2套API风格
-- 1. 传统API, open和close
-- 2. 新的API(推荐使用), setup,start,stop,setDuty,setFreq

-- 传统API
pwm.open(1, 1000, 50) -- 打开PWM1, 频率1kHz, 占空比50%
sys.wait(5000) -- 等待5秒
pwm.close(1) -- 关闭PWM1

-- 新API
pwm.setup(1, 1000, 50) -- 设置PWM1, 频率1kHz, 占空比50%
pwm.start(1) -- 启动PWM1
sys.wait(5000) -- 等待5秒
pwm.setFreq(1, 2000) -- 设置PWM1频率2kHz
sys.wait(5000) -- 等待5秒
pwm.setDuty(1, 25) -- 设置PWM1占空比25%
sys.wait(5000) -- 等待5秒
pwm.stop(1) -- 关闭PWM1

pwm.open(channel, period, pulse, pnum, precision)#

开启指定的PWM通道

参数

传入值类型

解释

int

PWM通道

int

频率, 1-N,单位Hz. N受限于具体硬件能力

int

占空比 0-分频精度

int

输出周期 0为持续输出, 1为单次输出, 其他为指定脉冲数输出

int

分频精度, 100/256/1000, 默认为100, 若设备不支持会有日志提示

返回值

返回值类型

解释

boolean

处理结果,成功返回true,失败返回false

例子

-- 打开PWM5, 频率1kHz, 占空比50%
pwm.open(5, 1000, 50)
-- 打开PWM5, 频率10kHz, 分频为 31/256
pwm.open(5, 10000, 31, 0, 256)

pwm.close(channel)#

关闭指定的PWM通道

参数

传入值类型

解释

int

PWM通道

返回值

返回值类型

解释

nil

无处理结果

例子

-- 关闭PWM5
pwm.close(5)

pwm.capture(channel)#

PWM捕获

参数

传入值类型

解释

int

PWM通道

int

捕获频率

返回值

返回值类型

解释

boolean

处理结果,成功返回true,失败返回false

例子

-- PWM0捕获
while 1 do
    pwm.capture(0,1000)
    local ret,channel,pulse,pwmH,pwmL  = sys.waitUntil("PWM_CAPTURE", 2000)
    if ret then
        log.info("PWM_CAPTURE","channel"..channel,"pulse"..pulse,"pwmH"..pwmH,"pwmL"..pwmL)
    end
end

pwm.setup(channel, period, pulse, pnum, precision)#

初始化指定的PWM通道

参数

传入值类型

解释

int

PWM通道

int

频率, 1-N,单位Hz. N受限于具体硬件能力

int

占空比 0-分频精度

int

输出周期 0为持续输出, 1为单次输出, 其他为指定脉冲数输出

int

分频精度, 100/256/1000, 默认为100, 若设备不支持会有日志提示

返回值

返回值类型

解释

boolean

处理结果,成功返回true,失败返回false

例子

-- 设置PWM5, 频率1kHz, 占空比50%
pwm.setup(5, 1000, 50)

pwm.start(channel)#

启动指定的PWM通道

参数

传入值类型

解释

int

PWM通道

返回值

返回值类型

解释

boolean

处理结果,成功返回true,失败返回false

例子

-- 启动PWM1
pwm.start(1)

pwm.stop(channel)#

停止指定的PWM通道

参数

传入值类型

解释

int

PWM通道

返回值

返回值类型

解释

boolean

处理结果,成功返回true,失败返回false

例子

-- 停止PWM1
pwm.stop(1)

pwm.setDuty(channel, duty)#

设置指定PWM通道的占空比

参数

传入值类型

解释

int

PWM通道

int

占空比

返回值

返回值类型

解释

boolean

处理结果,成功返回true,失败返回false

例子

-- 设置PWM1占空比25%
pwm.setDuty(1, 25)

pwm.setFreq(channel, freq)#

设置指定PWM通道的频率

参数

传入值类型

解释

int

PWM通道

int

频率, 1-N,单位Hz. N受限于具体硬件能力

返回值

返回值类型

解释

boolean

处理结果,成功返回true,失败返回false

例子

-- 设置PWM5频率2kHz
pwm.setFreq(5, 2000)