新聞中心

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

        基于WINCE S3C2440 的LED驅動程序的編寫

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

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

        本文引用地址:http://www.104case.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ū)

        關閉
        主站蜘蛛池模板: 成安县| 辉县市| 盐池县| 铅山县| 高要市| 青浦区| 松阳县| 大理市| 明溪县| 伊宁县| 长垣县| 称多县| 隆安县| 东乡族自治县| 杨浦区| 壤塘县| 江安县| 军事| 河西区| 丹东市| 从化市| 蓬莱市| 江源县| 沁源县| 武义县| 木兰县| 桐庐县| 广平县| 岫岩| 灌阳县| 张家川| 盐亭县| 正镶白旗| 海淀区| 临湘市| 亚东县| 襄垣县| 成武县| 沅江市| 永仁县| 轮台县|