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() {
myled.write();
i = button;
if (mybutton == )
{
myled = !myled; //利用操作符重载,这里不需要myled.read()和myled.write()
} if (button != 0x100)
{
myleds = ;
} else {
myleds = 0x600;
}
pc.printf("button = %x \r\n",i);
}
}
       从上面的代码中我们可以发现,运用了操作符重载之后,创建的对象可以直接进行读值和赋值,非常方便,熟悉51的朋友应该更喜欢,多数情况下不在需要调用read()和write()方法
        除了上面的类型,和提供了 DigitalInOut 类,相当于DigitalIn和DigitalOut的合体,使用中可以根据需要随时切换模式
上一篇:2018 Multi-University Training Contest 1 部分简单题解析


下一篇:swift 弹窗