試驗平台:Digi MF開發板
(圖MF071028001.jpg)
與IO相關的部分如下:
(3)撥碼開關SW1 (4)撥碼開關SW2 (11)GPIO燈—output (10)GPIO—input(參見下圖)
(圖MF071028003.jpg)
首先,要操作相關IO部分,必須撥碼開關SW1的撥碼全部撥到右邊,這時候GPIO有效。(SW1開關是切換串口和GPIO的)。
這時候如果你對撥碼開關SW2進行操作,你會發現,當SW2的撥碼在右邊的時候相對應GPIO燈會亮,撥到左邊則滅(這時候要保證沒有任何程序運行或有程序運行但無操作GPIO燈的指令操作)。
如果你要使用最右邊的GPIO入來控制GPIO燈,你必須使SW2的撥碼在左邊,這時候GPIO燈亮。你用一個短接線,把pin9和pin10端口短接(如上圖),這時候你發現GPIO第1個燈滅,斷開,則IO燈亮。相對應你也可以控制GPIO其它燈的亮滅。
好了,知道上面的知識,我們就可以進行相應的IO編程了。
首先我們要知道GPIO的pin,請參見下表。
(圖MF071028002.jpg)
很遺憾,從上表得知,SW1、SW2、GPIO共用同一批GPIO Pin。
分別為0,1,2,5,6。對編程的影響就是,不能同時操作 GPIO入和GPIO出,如果強行同時操作,雖然代碼可以編譯成功,但運行時會跳出如下異常。
(圖MF071028004.jpg)
下面是讀IO入的代碼:
using System;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using Microsoft.SPOT.Net;
using Microsoft.SPOT.Net.NetworkInformation;
public class DigiTest
{
public static void
{
InputPort[] input = new InputPort[5];
Cpu.Pin[] pin = new Cpu.Pin[5] { (Cpu.Pin)0, (Cpu.Pin)1, (Cpu.Pin)2, (Cpu.Pin)5, (Cpu.Pin)6 };
for (int i = 0; i < 5; i++)
{
input[i] = new InputPort(pin[i], false, Port.ResistorMode.PullUp);
}
while (true)
{
Debug.Print(input[0].Read().ToString() + " " + input[1].Read().ToString() + " " + input[2].Read().ToString() + " " + input[3].Read().ToString() + " " + input[4].Read().ToString());
Thread.Sleep(1000);
}
}
}
下面是寫IO出的代碼,部署運行後你會發現,GPIO會閃爍。
using System;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using Microsoft.SPOT.Net;
using Microsoft.SPOT.Net.NetworkInformation;
public class DigiTest
{
public static void
{
OutputPort[] output = new OutputPort[5];
Cpu.Pin[] pin = new Cpu.Pin[5] { (Cpu.Pin)0, (Cpu.Pin)1, (Cpu.Pin)2, (Cpu.Pin)5, (Cpu.Pin)6 };
for (int i = 0; i < 5; i++)
{
output[i] = new OutputPort(pin[i], false);
}
while (true)
{
for (int i = 0; i < 5; i++)
{
}
Thread.Sleep(1000);
}
}
}