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的合體,使用中可以根據需要隨時切換模式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM