轻松掌握LuatIO中的mcu API的mcu.altfun()函数,使你配置UART/PWM/GPIO/I2C/SPI等复用功能更加得心应手!
本文介绍了Air780EP模组GPIO复用PWM功能的两种实现方法:一是通过LuatIO工具生成配置文件结合pins API动态配置;二是使用mcu.altfun()函数直接操作。虽然官方推荐第一种方法,但针对老型号模组仍需使用mcu.altfun()。
最近在开发Air780EP这款模组的时候遇到需要复用GPIO的pwm功能,翻遍整个官方文档,发现实现复用功能的方法总共有两种,一种是通过可视化GPIO配置工具—— LuatIO由此工具生成对应的"pins_$model.json"文件,结合API库函数pins动态配置,最后以脚本的形式下载到模组中,完成该模组型号的GPIO复用配置。另一种是通过接口mcu API的mcu.altfun()函数,修改部分映射,达到我们复用的目的,如有需要相关官方文档地址,文章末尾已列出。
1、明明官方要淘汰mcu.altfun()函数,为啥还要用这种方式?
尽管官网上提到Air780EPM 底层固件从 V2006 开始,将只支持 pins_Air780EPM.json 一种 GPIO 复用功能配置方式,但是由于老型号 Air780E、Air780EP、Air780EPS、Air724UG 等不支持使用可视化配置工具,且老型号由于价格因素还有一大批客户使用,这个函数仍有用武之地。
2、如何快速入手该函数?
首先先看看该函数在官网上的介绍。

尽管官方对这个函数、参数及例子介绍很详细,但是在实际使用过程中仍然感到无从下手,尽管官方也表示这个函数非常晦涩难懂,但是这并不影响我们能够对他快速掌握。
一个函数的参数,就像是人的灵魂,了解了它们,我们就可以轻松驱动这个函数,它的第一个参数是个int类型,可选的值官方已经给出来了,并无难度我们直接跳过,第二个参数我们只需要注意一点,它的值是你需要复用外设后面的值比如需要复用PWM2,那这个参数就填2,我认为最难理解的是第三个参数,参数的解释是唯一ID号,这个唯一ID号在函数解释说一般是GPIO号,除非专用的SOC是PAD(PAD 通常指芯片内部的 “键合焊盘”,是芯片内部电路与外部引脚(PIN)连接的桥梁)或pin引脚号。但是结合例子及测试来看UART/PWM/GPIO/I2C/SPI等外设复用功能均指PAD,而非GPIO号。解决最难的参数,第4、第5参数按照介绍的查询后填写即可。
3、实际使用例程
假如我们现在想要使用Air780EP模组中GPIO2引脚的PWM1功能

由图片可知GPIO2引脚默认功能是OneWire(串行通信协议)我们只能配置该引脚的复用功能AltFunc5来实现PWM1功能。

由图可知GPIO1对应的PAD为16,根据线性关系推出GPIO2为17,由于PWM1是该引脚的AltFunc5且为输出,所以我们最终的配置函数为
mcu.altfun(mcu.PWM,1,17,5,false)
至此整个函数的运用讲解完毕,希望能够帮助你快速掌握该函数。
下面是官方文档链接:
Air780E vs Air780EP/Air780EPS vs Air780EPM/Air780EHM vs Air780EHV 六款模组管脚对比:Air780E/EP/EPS/EPM/EHM/EHV管脚对比 - 飞书云文档
mcuAPI - 封装mcu一些特殊操作:42 mcu - 合宙模组资料中心
合宙 LuatIO 工具(GPIO 复用初始化配置)使用说明:52 pins - 合宙模组资料中心
更多推荐


所有评论(0)