| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- --[[
- @module test_ioqueue
- @summary IO队列功能测试
- @version 1.0
- @date 2025.10.18
- @author 孟伟
- @usage
- 本功能模块演示的内容为:
- 高精度可变间隔脉冲输出
- 输出脉冲信息:
- 输出可变间隔非对称脉冲
- - 10次完整序列
- - 输出波形:低电平20us → 高电平30us → 低电平40us → 高电平50us→ 低电平60us → 高电平70us
- - 使用ioqueue.setdelay 单次模式,每个延时独立配置
- 本文件没有对外接口,直接在main.lua中require "fix_pulse_output"就可以加载运行;
- ]]
- --[[
- @module test_ioqueue
- @summary IO队列功能测试
- @version 1.0
- @date 2025.10.18
- @author 孟伟
- @usage
- 本功能模块演示的内容为:
- 高精度可变间隔脉冲输出功能
- 本文件没有对外接口,直接在main.lua中require "var_pulse_output"就可以加载运行;
- ]]
- -- 选好硬件定时器和输出引脚,这里使用硬件定时器0,输出引脚2
- local hw_timer_id, out_pin = 0, 2
- function var_pulse_output_fun()
- local _, tick_us = mcu.tick64()
- --确保为GPIO功能
- gpio.setup(out_pin, nil, nil)
- log.info('output 2 start')
- --测试高精度可变间隔定时输出
- ioqueue.init(hw_timer_id, 100, 10)
- --设置成输出口,电平1
- ioqueue.setgpio(hw_timer_id, out_pin, false, 0, 1)
- --单次延迟20us,如果不准,对time_tick微调
- ioqueue.setdelay(hw_timer_id, 20, tick_us - 3)
- --低电平
- ioqueue.output(hw_timer_id, out_pin, 0)
- --单次延迟30us
- ioqueue.setdelay(hw_timer_id, 30, tick_us - 3)
- --高电平
- ioqueue.output(hw_timer_id, out_pin, 1)
- --单次延迟40us
- ioqueue.setdelay(hw_timer_id, 40, tick_us - 3)
- --低电平
- ioqueue.output(hw_timer_id, out_pin, 0)
- --单次延迟50us
- ioqueue.setdelay(hw_timer_id, 50, tick_us - 3)
- --高电平
- ioqueue.output(hw_timer_id, out_pin, 1)
- --单次延迟60us
- ioqueue.setdelay(hw_timer_id, 60, tick_us - 3)
- --低电平
- ioqueue.output(hw_timer_id, out_pin, 0)
- --单次延迟70us
- ioqueue.setdelay(hw_timer_id, 70, tick_us - 3)
- --高电平
- ioqueue.output(hw_timer_id, out_pin, 1)
- ioqueue.start(hw_timer_id)
- sys.waitUntil("IO_QUEUE_DONE_" .. hw_timer_id)
- log.info('output 2 done')
- ioqueue.stop(hw_timer_id)
- ioqueue.release(hw_timer_id)
- sys.wait(500)
- end
- sys.taskInit(var_pulse_output_fun)
|