Microsoft  CSIP   WindowsMobile   MEDC   合作伙伴   体验中心 设为首页 加到收藏夹

 
登录       点击换一张     注册新用户 找回密码

在.Net Micro Framework中访问硬件 - part1
2008年07月10日02:28   编辑:黄季冬 来源: 博客 浏览: 366

1.GPIO
通常来说,一块MCU要与周边环境进行交流,使用GPIO(General Purpose Input/Output)无疑是最常用的方式。一个GPIO口在被初始化之后可以被用于输入或输出的通道。一个GPIO口可以由两种状态来描述 - 低(约为0伏)和高(通常认为是3.3伏的正向电压)。
在.Net Micro Framework中,GPIO的状态被定义为布尔型,false->低, true->高。

Tips这里说的低(0伏)和高(3.3伏)是指你在设置GPIO的时候,实际加在GPIO口的电压。而在考虑输入的时候一般1v以下会被认为是逻辑低,1.7~5.5伏通常认为是逻辑高。超过5.5的电压是如果不加保护电路通常是会损坏你的硬件的。
1.1输出
在Microsoft.SPOT.Hardware命名空间下,你可以找到OutputPort类,它继承自Microsoft.SPOT.Hardware.Port---一个用于描述GPIO的基础类。
定义OutputPort一般都会初始化一个默认值(true代表高,false表示低)。
OutputPort outputPort = new OutputPort(MyPins.StatusLED, true);
/*第一个参数是枚举类型Microsoft.SPOT.Hardware.Cpu.Pin,不过为了使你的代码更灵活,非常建议你使用自己封装的类来绑定CPU的管脚名称和GPIO口的编号。*/
接着,outputPort的Write和Read方法就可以使用了,Write方法控制了管脚的电平状态,Read方法用于返回当前状态,也即上一次设置的状态。
下面的例子用于让自定义pin的led按1hz的频率闪烁(实际上是亮暗各0.5s左右)。
OutputPort outputPort = new OutputPort(MyPins.StatusLED, true);
while (true)
{
Thread.Sleep(
500);
outputPort.Write(
!outputPort.Read()); //toggle port
}

1.2 输入
和OutputPort相类似,Microsoft.SPOT.Hardware.InputPort扮演了输入的功能。它同样继承自Microsoft.SPOT.Hardware.Port。下面的例子演示了如何在一个无限循环中轮询inputPort的状态。
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

InputPort inputPort 
= new InputPort(Cpu.Pin.GPIO_Pin2,//管脚号
false,//是否过滤毛刺信号
Port.ResistorMode.PullDown);//电阻模式,这里设为下拉即合上开关(按下按钮)时GPIO状态为高
while (true)
{
bool state = inputPort.Read(); //polling of port state
Debug.Print("GPIO input port at pin " + inputPort.Id +
" is " + (state ? "high" : "low"));
//留一点时间让设备或者模拟器能够对VS反应
Thread.Sleep(10);
}

另外,还有一个可以在运行时动态改变状态地逻辑端口Tristate Port。听名字似乎是三态端口,不过事实上目前它只能在高和低之间切换。
1.3 中断
如果你仅仅只是想等待一个按键的按下,那么使用前面那种使用无限循环的方式来读取输入口的状态的办法,无疑显得太耗了点,我们不并希望Cpu总是处于这么忙碌的状态,比如某些状况下(例如电池)。我们只是希望某些外部消息和请求以中断的形式告诉Cpu,在.Net MF中我们使用InterruptPort类来实现相应地功能,中断可以理解为硬件之间的事件。如果MCU除了等待某个GPIO口的事件而没有其他事情做的话,该处理器就可以放心的进入省电模式了。当一个信号的改变发生在相应的输入管脚的时候,MCU会“醒”来,然后相应的中断服务程序(ISR)会被执行
你可以把中断端口设置为上升沿触发或者下降沿触发。或者两者都触发,也可以是高低
12末页下一页

发表评论
评论标题 :
评论内容 :

    查看评论

请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。 本站拥有管理笔名和留言的一切权利。
相关文章推荐
· .net micro framework应用实例 2008-7-8  匿名
· .Net Micro Framework研究 模拟器改造 2008-7-8  WM移动解决方案联盟
· .Net Micro Framework研究—串口部署释疑 2008-7-7  叶帆
· .Net Micro Framework研究—中文显示 2008-4-18  yefan
· .NET Micro Framework初体验 2007-11-1  aawolf

  

论坛推荐  
热点活动
更多»

© CSIP 信息产业部软件与集成电路促进中心 All Rights Reserved 版权所有 京ICP备06020771号
联系电话:010-63951881-8003 王先生        邮件:wangj@csip.org.cn