⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgpio.c

📁 mstar 776 开发的车载dvd
💻 C
📖 第 1 页 / 共 2 页
字号:
    }
}
/******************************************************************************/
///GPIO initialize
/******************************************************************************/
void msGPIO_Init()
{
    MDrv_Scaler_SetPanelVCC(DISABLE);
    Power_On();

    XBYTE[PWM0_PWM1_CTRL] = 0x00;   // duble_bufer=0, pwm0/1:disable,	polar=0,clk=osc ( 1:clk=osc/4)
    XBYTE[PWM2_PWM3_CTRL] = 0x00;   // duble_bufer=0, pwm0/1:disable,	polar=0,clk=osc
    msPWM0_Period( PWM0_PERIOD );  //0x7f00 );
    msPWM1_Period( PWM1_PERIOD );  //0x7f00 );
    msPWM2_Period( PWM2_PERIOD );  //0x0000 );
    msPWM3_Period( PWM3_PERIOD );  //0x0000 );

    msPWMD0_DutyCycle( INIT_PWM0_DUTY );
    msPWMD1_DutyCycle( INIT_PWM1_DUTY );
    msPWMD2_DutyCycle( INIT_PWM2_DUTY );
    msPWMD3_DutyCycle( INIT_PWM3_DUTY );

    msPWM0_Setting( PWM0_SELECT );		    // PWM0
    msPWM1_Setting( PWM1_SELECT );			// PWM1
    msPWM2_Setting( PWM2_SELECT );			// PWM2
    msPWM3_Setting( PWM3_SELECT );			// PWM3

    //msPWM_OutputEnable( (PWM0_ENABLE | PWM1_ENABLE | PWM2_ENABLE | PWM3_ENABLE) );
    SetPanelBacklight(BACKLITE_INIT_SETTING);   //DISABLE);
    //CUS03 No Use
    //===============================
    Switch_YPbPr1();
    #if (FLASH_WP_PIN_CONTROL == ENABLE)
    Flash_Write_Protect_Disable();   //wp pin has no connect in Saturn2 demo circuit
    #endif
    #if (EEPROM_WP_PIN_CONTROL == ENABLE)
    EEPROM_Write_Protect_Disable();   //wp pin has no connect in Saturn2 demo circuit
    #endif
    Panel_VG_HL_CTL_ON();
    Tuner_ON();
    Demodulator_ON();
    //===============================

    //printf("\r\n *** Init GPIO done ***");   // kevin test
}

BOOLEAN msGPIO_IsBackLightOn(void)
{
    if(stSystemInfo.u8PanelPowerStatus & PANEL_POWER_LIGHT_ON)
        return TRUE;
    else
        return FALSE;
}

void msGPIO_AuSetPowerOnOff(BOOLEAN bOnOff)
{
    if(bOnOff == FALSE )
    {

    /*#if ( MS_BOARD_TYPE_SEL == BD_CUS1X_03)
        Audio_Amplifier_Stb();
        MDrv_Timer_Delayms(50);
        Audio_Lineut_OFF();
        Audio_Lineout_Stb();
    #endif*/	// kevin 071023_3
    }
}

//---------------------------------------------------------------------
// Pin Number should be 0~7
#define CONVERTPIN(Pin) (\
                            (Pin == 0) ? (BIT0) :\
                            (Pin == 1) ? (BIT1) :\
                            (Pin == 2) ? (BIT2) :\
                            (Pin == 3) ? (BIT3) :\
                            (Pin == 4) ? (BIT4) :\
                            (Pin == 5) ? (BIT5) :\
                            (Pin == 6) ? (BIT6) :(BIT7)\
                        )

typedef enum _CovertGPIOREGType
{
    REGGPIO34 = _BIT10,
    REGGPIO35 = _BIT11,
    REGGPIO36 = _BIT8,
    REGGPIO37 = _BIT9,

    REGGPIO38 = _BIT6,
    REGGPIO39 = _BIT7,
    REGGPIO40 = _BIT4,
    REGGPIO41 = _BIT5,
    REGGPIO42 = _BIT0,
    REGGPIO43 = _BIT1,
    REGGPIO44 = _BIT2,
    REGGPIO45 = _BIT3
}CovertGPIOREGType;
//---------------------------------------------------------------------
void GPIOWrite(BYTE Pin, BYTE Level)
{
    BYTE PinPos;

    PinPos = CONVERTPIN(Pin%8);

    if (Level)
    {
        if (Pin < 8)
        {
            XBYTE[REG_MUX_DTCON_GPIO_SEL] |= PinPos;// to force it as GPO (It's not necessary to set if it already init)
            XBYTE[REG_MUX_TOP0_GPIO] |= PinPos;
        }
        else if (Pin < 16)
            XBYTE[REG_MUX_TOP1_GPIO] |= PinPos;
        else if (Pin < 24)
            XBYTE[REG_MUX_TOP2_GPIO] |= PinPos;
        else if (Pin < 32)
            XBYTE[REG_MUX_TOP3_GPIO] |= PinPos;
        else if (Pin < 34)
            XBYTE[REG_MUX_TOP4_GPIO] |= PinPos;
        else if (Pin >= 48 && Pin <= 51)
            XBYTE[0x3A21] |= PinPos;
        else if (Pin == 52)
            XBYTE[REG_MUX_TOP6_GPIO] |= BIT2;
        else if (Pin == 53)
            XBYTE[REG_MUX_TOP6_GPIO] |= BIT0;
        else
        {
            if (Pin >= 34 && Pin <= 37)
            {
                if (Pin == 34)
                    XBYTE[0x309F] |= (REGGPIO34>>8);
                else if (Pin == 35)
                    XBYTE[0x309F] |= (REGGPIO35>>8);
                else if (Pin == 36)
                    XBYTE[0x309F] |= (REGGPIO36>>8);
                else
                    XBYTE[0x309F] |= (REGGPIO37>>8);
            }
            else if (Pin >= 38 && Pin <= 45)
            {
                if (Pin == 38)
                    XBYTE[0x309F] |= REGGPIO38;
                else if (Pin == 39)
                    XBYTE[0x309F] |= REGGPIO39;
                else if (Pin == 40)
                    XBYTE[0x309F] |= REGGPIO40;
                else if (Pin == 41)
                    XBYTE[0x309F] |= REGGPIO41;
                else if (Pin == 42)
                    XBYTE[0x309F] |= REGGPIO42;
                else if (Pin == 43)
                    XBYTE[0x309F] |= REGGPIO43;
                else if (Pin == 44)
                    XBYTE[0x309F] |= REGGPIO44;
                else if (Pin == 45)
                    XBYTE[0x309F] |= REGGPIO45;
            }
            else if (Pin == 46)
            {
                XBYTE[REG_MUX_TOP5_GPIO] |= _BIT6;
            }
        }
    }
    else
    {
        if (Pin < 8)
        {
            XBYTE[REG_MUX_DTCON_GPIO_SEL] |= PinPos;// to force it as GPO (It's not necessary to set if it already init)
            XBYTE[REG_MUX_TOP0_GPIO] &= ~PinPos;
        }
        else if (Pin < 16)
            XBYTE[REG_MUX_TOP1_GPIO] &= ~PinPos;
        else if (Pin < 24)
            XBYTE[REG_MUX_TOP2_GPIO] &= ~PinPos;
        else if (Pin < 32)
            XBYTE[REG_MUX_TOP3_GPIO] &= ~PinPos;
        else if (Pin < 34)
            XBYTE[REG_MUX_TOP4_GPIO] &= ~PinPos;
        else if (Pin >= 48 && Pin <= 51)
            XBYTE[0x3A21] &= ~PinPos;
        else if (Pin == 52)
            XBYTE[REG_MUX_TOP6_GPIO] &= ~BIT2;
        else if (Pin == 53)
            XBYTE[REG_MUX_TOP6_GPIO] &= ~BIT0;
        else
        {
            if (Pin >= 34 && Pin <= 37)
            {
                if (Pin == 34)
                    XBYTE[0x309F] &= ~(REGGPIO34>>8);
                else if (Pin == 35)
                    XBYTE[0x309F] &= ~(REGGPIO35>>8);
                else if (Pin == 36)
                    XBYTE[0x309F] &= ~(REGGPIO36>>8);
                else
                    XBYTE[0x309F] &= ~(REGGPIO37>>8);
            }
            else if (Pin >= 38 && Pin <= 45)
            {
                if (Pin == 38)
                    XBYTE[0x309F] &= ~REGGPIO38;
                else if (Pin == 39)
                    XBYTE[0x309F] &= ~REGGPIO39;
                else if (Pin == 40)
                    XBYTE[0x309F] &= ~REGGPIO40;
                else if (Pin == 41)
                    XBYTE[0x309F] &= ~REGGPIO41;
                else if (Pin == 42)
                    XBYTE[0x309F] &= ~REGGPIO42;
                else if (Pin == 43)
                    XBYTE[0x309F] &= ~REGGPIO43;
                else if (Pin == 44)
                    XBYTE[0x309F] &= ~REGGPIO44;
                else if (Pin == 45)
                    XBYTE[0x309F] &= ~REGGPIO45;
                else if (Pin == 46)
                {
                    XBYTE[REG_MUX_TOP5_GPIO] &= ~_BIT6;
                }
            }
        }
    }
}

BYTE GPIOWRead(BYTE Pin)
{
    BYTE Level = 0, PinPos;

    PinPos = CONVERTPIN(Pin%8);

    if (Pin < 8)
    {
        XBYTE[REG_MUX_DTCON_GPIO_SEL] &= ~PinPos;// to force it as GPI (It's not necessary to set if it already init)
        Level = XBYTE[REG_TOP0_GPIO_R] & PinPos;
    }
    else if (Pin < 16)
        Level = XBYTE[REG_TOP1_GPIO_R] & PinPos;
    else if (Pin < 24)
        Level = XBYTE[REG_TOP2_GPIO_R] & PinPos;
    else if (Pin < 32)
        Level = XBYTE[REG_TOP3_GPIO_R] & PinPos;
    else if (Pin < 34)
        Level = XBYTE[REG_TOP4_GPIO_R] & PinPos;
    else if (Pin >= 48 && Pin <= 51)
        Level = XBYTE[0x3A21] & PinPos;
    else if (Pin == 52)
        Level = XBYTE[REG_TOP6_GPIO_R] & BIT1;
    else if (Pin == 53)
        Level = XBYTE[REG_TOP6_GPIO_R] & BIT0;
    else
    {
        if (Pin >= 34 && Pin <= 37)
        {
            if (Pin == 34)
                Level = XBYTE[0x309F] & (REGGPIO34>>8);
            else if (Pin == 35)
                Level = XBYTE[0x309F] & (REGGPIO35>>8);
            else if (Pin == 36)
                Level = XBYTE[0x309F] & (REGGPIO36>>8);
            else
                Level = XBYTE[0x309F] & (REGGPIO37>>8);
        }
        else if (Pin >= 38 && Pin <= 45)
        {
            if (Pin == 38)
                Level = XBYTE[0x309F] & REGGPIO38;
            else if (Pin == 39)
               Level =  XBYTE[0x309F] & REGGPIO39;
            else if (Pin == 40)
                Level = XBYTE[0x309F] & REGGPIO40;
            else if (Pin == 41)
                Level = XBYTE[0x309F] & REGGPIO41;
            else if (Pin == 42)
                Level = XBYTE[0x309F] & REGGPIO42;
            else if (Pin == 43)
                Level = XBYTE[0x309F] & REGGPIO43;
            else if (Pin == 44)
                Level = XBYTE[0x309F] & REGGPIO44;
            else if (Pin == 45)
                Level = XBYTE[0x309F] & REGGPIO45;
        }
        else if (Pin == 46)
        {
            Level = XBYTE[REG_TOP5_GPIO_R] & _BIT6;
        }
    }

    if (Level != 0)
        Level = 1;

    return Level;
}

//----------------------------------------------------------------------

#undef _MSGPIO_C_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -