wince 6 s3c2440 io port opearation

  1. Decare a IO port
    volatile IOPreg *s2440IOP = (IOPreg *)IOP_BASE;
  2. IOPreg and IOP_BASE defined here:s2440.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;
  3. Operate the IO port like this:
    s2440IOP->rGPBCON = (s2440IOP->rGPBCON &~(3 << 10)) | (1<< 10);
    s2440IOP
    ->rGPBDAT=s2440IOP->rGPBDAT&~(0x1<<5);
原文地址:https://www.cnblogs.com/sunleecn/p/1734096.html