在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于WINCE S3C2440 的LED驅(qū)動程序的編寫

            基于WINCE S3C2440 的LED驅(qū)動程序的編寫

            作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏
            在SMDK2440的BSP包里經(jīng)??匆娺@兩句語句:

            volatile IOPreg *s2440IOP = (IOPreg *)IOP_BASE;
            volatile INTreg *s2440INT = (INTreg *)INT_BASE;

            本文引用地址:http://www.biyoush.com/article/201611/320093.htm

            這兩條語句簡單的理解就是把s2440IOP和IOP_BASE等價,把s2440INT和INT_BASE等價。

            IOP_BASE和INT_BASE在s244.h頭文件中

            #define IOP_BASE 0xB1600000 // 0x56000000
            typedef struct {
            unsigned int rGPACON;// 00
            unsigned int rGPADAT;
            unsigned int rPAD1[2];

            unsigned int rGPBCON;// 10
            unsigned int rGPBDAT;
            unsigned int rGPBUP;
            unsigned int rPAD2;

            unsigned int rGPCCON;// 20
            unsigned int rGPCDAT;
            unsigned int rGPCUP;
            unsigned int rPAD3;

            unsigned int rGPDCON;// 30
            unsigned int rGPDDAT;
            unsigned int rGPDUP;
            unsigned int rPAD4;

            unsigned int rGPECON;// 40
            unsigned int rGPEDAT;
            unsigned int rGPEUP;
            unsigned int rPAD5;

            unsigned int rGPFCON;// 50
            unsigned int rGPFDAT;
            unsigned int rGPFUP;
            unsigned int rPAD6;

            unsigned int rGPGCON;// 60
            unsigned int rGPGDAT;
            unsigned int rGPGUP;
            unsigned int rPAD7;

            unsigned int rGPHCON;// 70
            unsigned int rGPHDAT;
            unsigned int rGPHUP;
            unsigned int rPAD8;

            unsigned int rMISCCR;// 80
            unsigned int rDCKCON;
            unsigned int rEXTINT0;
            unsigned int rEXTINT1;
            unsigned int rEXTINT2;// 90
            unsigned int rEINTFLT0;
            unsigned int rEINTFLT1;
            unsigned int rEINTFLT2;
            unsigned int rEINTFLT3;// A0
            unsigned int rEINTMASK;
            unsigned int rEINTPEND;
            unsigned int rGSTATUS0;// AC
            unsigned int rGSTATUS1;// B0
            unsigned int rGSTATUS2;// B4 ;;; SHL
            unsigned int rGSTATUS3;// B8
            unsigned int rGSTATUS4;// BC

            unsigned int rFLTOUT;// C0
            unsigned int rDSC0;
            unsigned int rDSC1;
            unsigned int rMSLCON;

            unsigned int rGPJCON;// D0
            unsigned int rGPJDAT;
            unsigned int rGPJUP;
            unsigned int rPAD9;

            }IOPreg;

            #define INT_BASE 0xB0A00000 // 0x4A000000
            typedef struct {
            unsigned int rSRCPND;
            unsigned int rINTMOD;
            unsigned int rINTMSK;
            unsigned int rPRIORITY;
            unsigned int rINTPND;
            unsigned int rINTOFFSET;
            unsigned int rSUBSRCPND;
            unsigned int rINTSUBMSK;
            }INTreg ;

            可見IOPreg和INTreg是兩個結構體,而INT_BASE和IOP_BASE是連個虛擬地址。因此上面的兩條語句就是把兩個虛擬地址強化成結構體的首地址,因此可以訪問結構體對應的寄存器了。




            評論


            技術專區(qū)

            關閉