Air202入坑指南2---LED閃爍

Air202入坑指南2—LED閃爍

首先我們需要注意的是關於這個Air202的原理圖以及關於引腳方面的設置。

pins.setup(pin, val, pull)

配置GPIO模式
  • 參數

傳入值類型 釋義
number pin,GPIO ID
GPIO 0到GPIO 31表示爲pio.P0_0到pio.P0_31
GPIO 32到GPIO XX表示爲pio.P1_0到pio.P1_(XX-32),例如GPIO33 表示爲pio.P1_1
param val,number、nil或者function類型
配置爲輸出模式時,爲number類型,表示默認電平,0是低電平,1是高電平
配置爲輸入模式時,爲nil
配置爲中斷模式時,爲function類型,表示中斷處理函數
param pull, number, pio.PULLUP:上拉模式 。pio.PULLDOWN:下拉模式。pio.NOPULL:高阻態
如果沒有設置此參數,默認的上下拉參考模塊的硬件設計說明書

  • 返回值
    function
    配置爲輸出模式時,返回的函數,可以設置IO的電平
    配置爲輸入或者中斷模式時,返回的函數,可以實時獲取IO的電平

  • 例子

setOutputFnc = pins.setup(pio.P1_1,0),配置GPIO 33,輸出模式,默認輸出低電平;
-- 執行setOutputFnc(0)可輸出低電平,執行setOutputFnc(1)可輸出高電平

getInputFnc = pins.setup(pio.P1_1,intFnc),配置GPIO33,中斷模式
-- 產生中斷時自動調用intFnc(msg)函數:上升沿中斷時:msg爲cpu.INT_GPIO_POSEDGE;下降沿中斷時:msg爲cpu.INT_GPIO_NEGEDGE
-- 執行getInputFnc()即可獲得當前電平;如果是低電平,getInputFnc()返回0;如果是高電平,getInputFnc()返回1

getInputFnc = pins.setup(pio.P1_1),配置GPIO33,輸入模式
-- 執行getInputFnc()即可獲得當前電平;如果是低電平,getInputFnc()返回0;如果是高電平,getInputFnc()返回1

由於文檔顯示LED的引腳是P33和P29所以根據上圖的Pin模塊的提示我們可以確認可以將引腳配置爲P1-1和P0-29.

local level = 0
--GPIO1配置爲輸出,默認輸出低電平,可通過setGpio1Fnc(0或者1)設置輸出電平
local setGpio1Fnc = pins.setup(pio.P1_1, 0)
sys.timerLoopStart(
    function()
        level = level == 0 and 1 or 0
        setGpio1Fnc(level)
        log.info("testGpioSingle.setGpio33Fnc", level)
    end,
    1000
)
local GPIO_LED = pins.setup(pio.P0_29, 0)
sys.timerLoopStart(
    function()
        GPIO_LED(1)
        log.info("testGpioSingle.setGpio29Fnc", 1)
    end,
    1000
)
--GPIO5配置爲輸入,可通過getGpio5Fnc()獲取輸入電平
local getGpio5Fnc = pins.setup(pio.P0_5)
sys.timerLoopStart(
    function()
        log.info("testGpioSingle.getGpio5Fnc", getGpio5Fnc())
    end,
    1000
)

由程序可見。通過Pins模塊的設置我們可以控制LED的閃爍。S9開發板的LED燈現在就是一個燈閃爍另外一個燈常亮。並且可以實時的顯示引腳的狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章