为满足多样化外设接口需求,MCU 的 GPIO 引脚通常支持多种复用功能。本文围绕 LuatIO 开发工具,系统阐述如何对 GPIO 引脚进行复用功能选择与初始化配置,涵盖模式设定、寄存器操作逻辑及常见配置流程,为开发者提供可落地的技术参考。
LuatIO工具可以将模块内多个引脚同时支持的一个功能指定给配置的引脚使用,方便进行管脚复用配置操作,目前的主流型号都可以用此工具进行配置。
一、LuatIO工具在LuaTools的入口
LuatIO工具现已集成在LuaTools中,截图说明如下;
-
LuaTools如何初次下载LuatIO或者升级LuatIO版本?
![image]()
![image]()
-
LuatIO在LuaTools中的入口在哪里?
![image]()


二、GPIO 配置
GPIO 配置的全过程,我们分为三部分进行说明,分别是:
1、LuatIO 可视化 GPIO 复用功能配置工具;
2、由 LuatIO 生成 pins_$model.json 文件;
3、API 库函数 pins 动态配置;
4、通过 LuaTools 将 pins_$model.json 文件下载到模组中;
1,LuatIO 工具
注意:LuatIO工具仅支持Win10及之上Windows操作系统。
LuatIO工具使用; 目前LuatIO工具已集成在luatools中,可以在项目管理界面打开:

LuatIO 界面截图如下:

其中:
左侧为 GPIO 复用功能配置选择栏,空白框内可以写该管脚相应的注释说明;
右侧为 Air780EPM 的管脚排列图,其中淡绿色部分为可以配置的 GPIO 管脚;
以 Air780EPM 开发板 V1.3 为例,根据其硬件实际使用情况配置后的截图如下:

2,生成 pins_$model.json 文件
生成对应型号的json文件分为以下几步
1.打开LuatIO配置工具。

2.点击型号选择

3.配置自己需要复用的管脚

4.配置完成后管脚处会显示对应功能,右侧俯视图对应管脚显示会变暗,下方会显示对应功能。

5.点击保存即可
生成.josn配置文件最新固件兼容三种命名,以Air780EPM为例:
pins_Air780EPM.json
pins_AIR780EPM.json
pins_air780epm.json

2.1,生成 pins_Air8000A.json 文件
1.点击“保存”;

2.命名"pins_Air8000A";

说明:
(1)文件名必须严格遵守 pins_$model.json 格式:pins_Air8000A;
(2)pins_Air8000A.json 截图如下:

2.2,生成 pins_Air780EPM.json 文件
1.点击"保存";

2.命名"pins_Air780EPM";

说明:
(1)文件名必须严格遵守 pins_$model.json 格式:pins_Air780EPM;
(2)pins_Air780EPM.json 截图如下:

2.3,生成 pins_air8101.json 文件
1.点击"保存";

2.命名"pins_air8101.json";

说明:
(1)文件名必须严格遵守 pins_$model.json 格式:pins_air8101.json;
(2)pins_air8101.json 截图如下:

3,API 库函数 pins 动态配置
首先,请使用 LuatIO 的可视化工具进行配置,如果不需要io复用功能通常用不到pins这个功能;
其次,本库的 API 属于高级用法, 仅动态配置管脚时使用(LuatIO 本来已经初始化好了,但在代码运行过程中需要对某个或某些 GPIO 的复用功能进行动态调整);
再次,pins 是 LuatOS 核心库,在脚本代码中不需要 require,可以直接使用;
pins.setup(pin, func)
在 pins_$model.json 文件初始化之后,再一次或多次指定某个或多个管脚的功能变化;
说明!此功能是为了动态修改管脚复用,99% 的用户可能不会用到本 API;

4,将 pins_$model.json 下载到模组
首先,本小节我们只针对不需要"API 库函数 pins 动态配置"的情况进行演示;
其次,即便需要"API 库函数 pins 动态配置"的情况,pins 的使用方法跟其它 API 核心库函数没有区别。
4.1,将 pins_Air8000A.json 下载到模组
1.以 Air8000A V2008固件为例;
截图如下:

2.pins_Air8000A 保存在 json 文件夹内;

3.下载到 Air8000A 中;

4.2,将 pins_Air780EPM.json 下载到模组
1.以 Air780EPM 开发板 V1.3 出厂固件为例;
截图如下:

2.pins_Air780EPM 保存在 json 文件夹内;

3.下载到 Air780EPM 开发板 V1.3 中;

4.3,将 pins_air8101.json 下载到模组
1.以 Air8101 核心板为例,选择最新的固件;

2.将pins_air8101.json引脚配置文件增加到脚本和资源列表;

3.将pins_air8101.json 同代码一起下载到 Air8101 核心板中;

三,其它说明
- Lua 代码中,需要声明调用 pins_Air780EPM.json 文件吗?
答案:
不需要;
- 只有 Air780EPM 支持 pins_Air780EPM.json 和 API 库函数 pins 搭配的配置方式吗?
回答:
不是的;
注意!LuatIO 工具(pins_$model.json)和 API 函数 pins 都支持主推型号,老型号都不再支持。
- 虽然该工具很方便,但我已经习惯了 mcu.altfun()函数配置,还可以继续使用吗?
回答:
不可以了;
Air780EPM 底层固件从 V2006 开始,将只支持 pins_Air780EPM.json 一种 GPIO 复用功能配置方式,之前的 mcu.altfun()方式将不再继续支持!遇到动态配置的情况,可以结合 API 库函数 pins 进行操作。
也就是说,如果您使用 Air780EPM 底层固件 V2005 或之前的版本已经量产出货,后续您因某种原因需要远程升级基于 V2006 及其后续底层固件版本的软件时,您的脚本文件也需要通过 pins_Air780EPM.json 的方式重新对 GPIO 复用功能进行配置,原来的 mcu.altfun()配置方式将会失效。
- 为什么我在Docs 文档网站里还经常看到关于 mcu.altfun()函数的出现?
回答:
在整理了;
mcu.altfun()的 API 库函数说明已经从 Docs 上撤掉,但确实还有非常多的其它文档说明仍然"保留",我们可能要花一段时间才能完全"清除";
- 如果未进行pins_Air780EPM.json的配置,代码可以运行吗?
回答:
可以运行;
会以Air780EPM各GPIO的默认功能执行;
如果所引用的GPIO复用功能跟默认功能不一致,代码就会无法执行。
- 模组的demo和json文件需要分开烧录吗?
回答:
不用分开烧录,在项目管理界面添加自己的demo和配置好的文件后烧录一次即可。
今天的内容就分享到这里了~


