mbed学习之Digital IO (一)

        mbed的IO操作非常灵活,常见的关于Digital IO操作整理如下表 ,其中蓝色字体是构造函数,绿色字体的是操作符重载,使用时只要创建对象,就可以调用对应的方法来操作,并且每种都提供了操作符重载,使用上更加灵活       

DigitalIn DigitalIn (PinName pin) 构造函数,创建连接到指定Pin的DigitalIn对象
DigitalIn (PinName pin, PinMode mode) 构造函数,同上,指定了PinMode
int read () 读Pin状态,返回0 or 1
void mode (PinMode pull) 设定PinMode(PullUp, PullDown, PullNone, OpenDrain)
int  is_connected ()  
operator int () 操作符重载,效果等同于 read()
DigitalOut DigitalOut (PinName pin) 构造函数,创建连接到指定Pin的DigitalOut对象
DigitalOut (PinName pin, int value) 构造函数,同上,指定了初始值
void  write (int value) 写值到Pin
int  read () 读Pin状态,返回0 or 1
int  is_connected ()  
DigitalOut &  operator= (int value) 操作俯重载,效果等同于 write()
operator int () 操作符重载,效果等同于 read()
PortIn PortIn (PortName port, int mask=0xFFFFFFFF) mask用来标记需要操作哪些Pin
int read ()  
void  mode (PinMode mode)  
operator int () 操作符重载,效果等同于 read() 
PortOut PortOut (PortName port, int mask=0xFFFFFFFF) mask用来标记需要操作哪些Pin
void  write (int value)  
int  read ()  
PortOut &  operator= (int value) 操作俯重载,效果等同于 write() 
operator int () 操作符重载,效果等同于 read() 

 

#include "mbed.h"

DigitalOut myled(LED1);
PortOut       myleds(PortB,0x700);         // PB8,PB9,PB10
DigitalIn  mybutton(USER_BUTTON);
PortIn       button(PortA,0x100);            // PA8
Serial     pc(USBTX,USBRX);

int main() {
    unsigned long i;
    while(1) {
        myled.write(1);
        i = button;
        if (mybutton == 0)
        {
            myled = !myled;                //利用操作符重载,这里不需要myled.read()和myled.write()
        }
        
        if (button != 0x100)
        {
            myleds = 0;
        } else {
            myleds = 0x600;
        }
        pc.printf("button = %x \r\n",i);
    }
}

 

       从上面的代码中我们可以发现,运用了操作符重载之后,创建的对象可以直接进行读值和赋值,非常方便,熟悉51的朋友应该更喜欢,多数情况下不在需要调用read()和write()方法
        除了上面的类型,和提供了 DigitalInOut 类,相当于DigitalIn和DigitalOut的合体,使用中可以根据需要随时切换模式

 

posted @ 2015-12-20 17:37  好心情_梦想  阅读(3218)  评论(0编辑  收藏  举报