- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
演示模块概述
1、main.lua:主程序入口;
2、pwm_app.lua:PWM 输出功能模块;
3、pins_Air780EPM.json:用于配置管脚复用功能的 json 文件;
- 关于如何生成 json 文件参考:https://docs.openluat.com/air780epm/common/luatio/;
- 示例代码中使用的是 Air780EPM 模组的 PWM4 通道(GPIO27,PIN16),参考完上述文档后通过 LuatIO 工具配置好并保存,最后连同脚本一起烧录到 Air780EPM 模组中即可实现 PWM 输出功能;
演示功能概述
使用 Air780EPM 核心板搭配 PWM 库演示 PWM 输出功能;
PWM 库目前有两套 API 风格:
1、旧风格 PWM 演示:
- 使用 pwm.open() 函数一次性完成 PWM 通道的配置与启动
- 使用 pwm.close() 函数关闭 PWM 通道
- 旧风格 PWM 接口不支持动态调整参数
2、新风格 PWM 演示:
- 使用 pwm.setup() 函数进行 PWM 参数配置
- 使用 pwm.start() 函数开启 PWM 通道进行 PWM 输出
- 使用 pwm.setDuty() 函数动态调整占空比,支持在开启 PWM 通道后调用
- 使用 pwm.setFreq() 函数动态调整信号频率,支持在开启 PWM 通道后调用
- 新风格 PWM 接口支持实时动态调整占空比和信号频率
演示硬件环境
1、Air780EPM 核心板一块
2、TYPE-C USB数据线一根
3、杜邦线若干
4、逻辑分析仪或者示波器,用于观察 PWM 输出的波形
5、代码中选用的 PWM 通道是 Air780EPM 模组的 PWM4(GPIO27,PIN16)
演示软件环境
2、Air780EPM V2016 版本(理论上最新版本固件也可以,如果使用最新版本的固件不可以,可以烧录 V2016-1 固件对比验证)
演示核心步骤
1、搭建好硬件环境
2、Luatools 工具烧录内核固件和 demo 脚本代码
3、烧录成功后,自动开机运行
4、正常运行情况时的日志如下:
[000000000.427] I/user.main PWM 001.000.000
[000000000.434] I/user.PWM PWM 综合演示任务开始
[000000000.434] I/user.PWM 旧风格 PWM 示例开始
[000000000.435] I/user.PWM PWM4 通道开启成功: 信号频率 1000 Hz, 分频精度 100, 占空比 45%
[000000001.435] I/user.PWM PWM4 通道已关闭
[000000002.435] I/user.PWM PWM4 通道开启成功: 信号频率 500 Hz, 分频精度 100, 占空比 60%
[000000004.436] I/user.PWM PWM4 通道已关闭
[000000005.436] I/user.PWM PWM4 通道开启成功: 信号频率 300 Hz, 分频精度 100, 占空比 80%
[000000008.437] I/user.PWM PWM4 通道已关闭
[000000008.437] I/user.PWM 旧风格 PWM 示例结束
[000000011.437] I/user.PWM 新风格 PWM 示例开始
[000000011.438] I/user.PWM PWM4 配置成功: 信号频率 1000 Hz, 分频精度 100, 占空比 50%
[000000011.438] I/user.PWM PWM4 启动成功
[000000013.438] I/user.PWM PWM4 占空比更新为 25%
[000000015.439] I/user.PWM PWM4 频率更新为 2000 Hz
[000000017.439] I/user.PWM PWM4 停止成功
[000000017.440] I/user.PWM 新风格 PWM 示例结束
[000000017.440] I/user.PWM PWM 综合演示任务结束
5、使用逻辑分析仪或者示波器观察 PWM 输出波形是否与配置的参数一致