美文网首页Luat开源硬件
Luat实例教程:UART_GPIO切换

Luat实例教程:UART_GPIO切换

作者: Luat物联网通信模块 | 来源:发表于2018-03-23 13:24 被阅读37次

    本示例实现的功能是:uart和gpio功能切换控制demo项目。

    1.在编辑工具建立一个test.lua的文件(不一定叫这个名字,用户可以自己随便取名)

    2.设置本文件被全体可见。也就意味着,一旦test被某一文件加载,则test在任何文件中均可被看见,即test中全局变量和函数均可被任何文件调用。

    module(...,package.seeall)
    

    3.定义print函数,调试用

    local function print(...)
        _G.print("test",...)
    end
    

    4.编写uartopen,uartclose函数

    --uartuse:引脚当前是否做为uart功能使用,true表示是,其余的表示不是
    local uartid,uartuse = 1,true
    local function uartopn()
        uart.setup(uartid,115200,8,uart.PAR_NONE,uart.STOP_1)   
    end
    
    local function uartclose()
        uart.close(uartid)
    end
    

    5.切换到uart功能使用

    local function switchtouart()
        print("switchtouart",uartuse)
        if not uartuse then
            --关闭gpio功能
            pio.pin.close(pio.P0_1)
            pio.pin.close(pio.P0_0)
            --打开uart功能
            uartopn()
            uartuse = true
        end
    end
    

    6.切换到gpio功能使用

    local function switchtogpio()
        print("switchtogpio",uartuse)
        if uartuse then
            --关闭uart功能
            uartclose()
            --配置gpio方向
            pio.pin.setdir(pio.OUTPUT,pio.P0_1)
            pio.pin.setdir(pio.OUTPUT,pio.P0_0)
            --输出gpio电平
            pio.pin.setval(1,pio.P0_1)
            pio.pin.setval(0,pio.P0_0)
            uartuse = false
        end 
    end
    

    7.编写测试函数

    --切换uart和gpio功能
    local function switch()
        if uartuse then
            switchtogpio()
        else
            switchtouart()
        end
    end
    
    --循环定时器,5秒切换一次功能
    sys.timer_loop_start(switch,5000)
    

    8.在编辑工具中建立一个名为main.lua的文件。lua脚本的执行从main.lua开始,main.lua是入口文件(注意:main.lua只能有一个)。在main.lua中把test加载进去就好了。sys.init()是对系统初始化,sys.run()是系统主程序。这两句必须有。

    --重要提醒:必须在这个位置定义MODULE_TYPE、PROJECT和VERSION变量
    --MODULE_TYPE:模块型号,目前仅支持Air201、Air202、Air800
    --PROJECT:ascii string类型,可以随便定义,只要不使用,就行
    --VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义
    MODULE_TYPE = "Air202"
    PROJECT = "UART_GPIO_SWITCH"
    VERSION = "1.0.0"
    require"sys"
    require"test"
    if MODULE_TYPE=="Air201" then
    require"wdt"
    end
    sys.init(0,0)
    sys.run()
    

    !!!attention

    一个工程只有一个main.lua
    

    相关文章

      网友评论

        本文标题:Luat实例教程:UART_GPIO切换

        本文链接:https://www.haomeiwen.com/subject/zbtxcftx.html