.Net Micro Framework研究—IO读写

试验平台:Digi MF开发板

(图MF071028001.jpg

IO相关的部分如下:

3)拨码开关SW1 4)拨码开关SW2 11GPIO—output 10GPIO—input(参见下图)

(图MF071028003.jpg

首先,要操作相关IO部分,必须拨码开关SW1的拨码全部拨到右边,这时候GPIO有效。(SW1开关是切换串口和GPIO的)。

这时候如果你对拨码开关SW2进行操作,你会发现,当SW2的拨码在右边的时候相对应GPIO灯会亮,拨到左边则灭(这时候要保证没有任何程序运行或有程序运行但无操作GPIO灯的指令操作)。

如果你要使用最右边的GPIO入来控制GPIO灯,你必须使SW2的拨码在左边,这时候GPIO灯亮。你用一个短接线,把pin9pin10端口短接(如上图),这时候你发现GPIO1个灯灭,断开,则IO灯亮。相对应你也可以控制GPIO其它灯的亮灭。

好了,知道上面的知识,我们就可以进行相应的IO编程了。

首先我们要知道GPIOpin,请参见下表。

(图MF071028002.jpg

很遗憾,从上表得知,SW1SW2GPIO共用同一批GPIO Pin

分别为01256。对编程的影响就是,不能同时操作 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 Main()

{

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 Main()

{

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++)

{

output[i].Write(!output[i].Read());

}

Thread.Sleep(1000);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值