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 );

     

你可能感兴趣的:(WinCE)