mbed学习之Digital IO (一)

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

DigitalInDigitalIn (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()
DigitalOutDigitalOut (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()
PortInPortIn (PortName port, int mask=0xFFFFFFFF)mask用来标记需要操作哪些Pin
int read () 
void  mode (PinMode mode) 
operator int ()操作符重载,效果等同于 read() 
PortOutPortOut (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的合体,使用中可以根据需要随时切换模式

 

转载于:https://www.cnblogs.com/cat-li/p/5061371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值