#include "GpioUser.h"
#include "Components.h"



void Gpio_Init(_GpioUser_Enum InitMode)
{
    if (InitMode == Gpio_Uvalid)
    {
        return;
    }

    if ((InitMode == Gpio_KL30_Init) || (InitMode == Gpio_WakeUp_Init))
    {
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN00, GpioOut_Low);      //空 
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN01, RTE_GPIO_DIR_IN);  //KL15
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN02, RTE_GPIO_DIR_IN);  //段码SPI10-SD-1
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN03, RTE_GPIO_DIR_IN);  //段码SPI10-CSB-1
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN04, RTE_GPIO_DIR_IN);  //段码SPI10-SCL-1
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN05, RTE_GPIO_DIR_IN);  //按键E信号_N_IN_MCU
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN06, RTE_GPIO_DIR_IN);  //按键D信号_N_IN_MCU

        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN00, RTE_GPIO_DIR_IN);  //表盘背光-PWM
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN01, RTE_GPIO_DIR_IN);  //RXD-ESP-IN-MCU
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN02, GpioOut_High);     //TXD-ESP-IN-MCU
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN03, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN04, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN05, GpioOut_High);     //总计工作时长统计千位_MCU_OUT
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN06, GpioOut_High);     //总计工作时长统计百十位_MCU_OUT
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN07, GpioOut_High);     //交互指示灯_PWM_MCU_OUT

        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN00, RTE_GPIO_DIR_IN);  //AVDD
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN01, RTE_GPIO_DIR_IN);  //GND
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN02, RTE_GPIO_DIR_IN);  //KL30-AD
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN03, RTE_GPIO_DIR_IN);  //KL15-AD
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN04, GpioOut_High);     //电量十位_MCU_OUT
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN05, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN06, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN07, GpioOut_Low);      //空

        RTE_GPIO_Config(RTE_GPIO_PORT03_PIN00, GpioOut_High);     //电量百位_MCU_OUT
        RTE_GPIO_Config(RTE_GPIO_PORT03_PIN01, GpioOut_Low);      //SDB_LED_DRIVER

        RTE_GPIO_Config(RTE_GPIO_PORT04_PIN00, GpioOut_Low);      //SEDIO-编程
        RTE_GPIO_Config(RTE_GPIO_PORT04_PIN01, GpioOut_High);     //OUT_EN_1
        RTE_GPIO_Config(RTE_GPIO_PORT04_PIN02, RTE_GPIO_DIR_IN);  //OUT_ST
        RTE_GPIO_Config(RTE_GPIO_PORT04_PIN03, GpioOut_High);     //OUT_EN

        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN00, RTE_GPIO_DIR_IN);  //CAN_MCU_RXD
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN01, GpioOut_High);     //CAN_MCU_TXD
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN02, GpioOut_Low);      //CAN_STB_MCU
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN03, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN05, GpioOut_Low);      //空

        RTE_GPIO_Config(RTE_GPIO_PORT06_PIN00, GpioOut_Low);      //存储SCL
        RTE_GPIO_Config(RTE_GPIO_PORT06_PIN01, GpioOut_Low);      //存储SDA
        RTE_GPIO_Config(RTE_GPIO_PORT06_PIN02, GpioOut_Low);      //SCL_MCU
        RTE_GPIO_Config(RTE_GPIO_PORT06_PIN03, GpioOut_Low);      //SDA_MCU

        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN00, RTE_GPIO_DIR_IN);  //段码SPI20-SCL-2
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN01, RTE_GPIO_DIR_IN);  //段码SPI20-CSB-2
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN02, RTE_GPIO_DIR_IN);  //段码SPI20-SD-2
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN03, RTE_GPIO_DIR_IN);  //按键C信号-P-MCU-IN
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN04, RTE_GPIO_DIR_IN);  //按键B信号-P-MCU-IN
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN05, RTE_GPIO_DIR_IN);  //按键A信号-P-MCU-IN
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN06, RTE_GPIO_DIR_IN);  //草满指示信号-P-MCU-IN
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN07, RTE_GPIO_DIR_IN);  //大灯开启信号-P-MCU-IN

        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN00, GpioOut_High);     //L_BiasBitSW_POW---
        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN01, GpioOut_Low);      //X1
        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN02, GpioOut_Low);      //X2
        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN03, GpioOut_Low);      //XT1
        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN04, GpioOut_Low);      //XT2

        RTE_GPIO_Config(RTE_GPIO_PORT13_PIN00, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT13_PIN06, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT13_PIN07, GpioOut_Low);      //SWCLK-编程

        RTE_GPIO_Config(RTE_GPIO_PORT14_PIN00, GpioOut_High);     //L_BD433Ctrl_OUT
        RTE_GPIO_Config(RTE_GPIO_PORT14_PIN01, GpioOut_Low);      //空
        RTE_GPIO_Config(RTE_GPIO_PORT14_PIN06, RTE_GPIO_DIR_IN);  //A_Version---
        RTE_GPIO_Config(RTE_GPIO_PORT14_PIN07, GpioOut_Low);      //空
    }
    else 
    {
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN00, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN01, RTE_GPIO_DIR_IN);
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN02, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN03, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN04, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN05, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT00_PIN06, GpioOut_Low);//

        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN00, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN01, RTE_GPIO_DIR_IN);
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN02, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN03, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN04, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN05, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN06, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT01_PIN07, GpioOut_Low);//

        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN00, GpioOut_High);
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN01, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN02, RTE_GPIO_DIR_IN);
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN03, RTE_GPIO_DIR_IN);
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN04, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN05, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN06, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT02_PIN07, GpioOut_Low);//

        RTE_GPIO_Config(RTE_GPIO_PORT03_PIN00, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT03_PIN01, GpioOut_Low);

        RTE_GPIO_Config(RTE_GPIO_PORT04_PIN00, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT04_PIN01, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT04_PIN02, RTE_GPIO_DIR_IN);//
        RTE_GPIO_Config(RTE_GPIO_PORT04_PIN03, GpioOut_Low);//

        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN00, RTE_GPIO_DIR_IN);//
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN01, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN02, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN03, GpioOut_Low);///
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT05_PIN05, GpioOut_Low);//

        RTE_GPIO_Config(RTE_GPIO_PORT06_PIN00, GpioOut_High);
        RTE_GPIO_Config(RTE_GPIO_PORT06_PIN01, GpioOut_High);
        RTE_GPIO_Config(RTE_GPIO_PORT06_PIN02, GpioOut_High);
        RTE_GPIO_Config(RTE_GPIO_PORT06_PIN03, GpioOut_High);

        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN00, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN01, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN02, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN03, RTE_GPIO_DIR_IN);//
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN04, RTE_GPIO_DIR_IN);//
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN05, RTE_GPIO_DIR_IN);//
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN06, RTE_GPIO_DIR_IN);//
        RTE_GPIO_Config(RTE_GPIO_PORT07_PIN07, RTE_GPIO_DIR_IN);//

        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN00, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN01, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN02, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN03, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT12_PIN04, GpioOut_Low);

        RTE_GPIO_Config(RTE_GPIO_PORT13_PIN00, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT13_PIN06, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT13_PIN07, GpioOut_Low);

        RTE_GPIO_Config(RTE_GPIO_PORT14_PIN00, GpioOut_Low);
        RTE_GPIO_Config(RTE_GPIO_PORT14_PIN01, GpioOut_Low);//
        RTE_GPIO_Config(RTE_GPIO_PORT14_PIN06, RTE_GPIO_DIR_IN);
        RTE_GPIO_Config(RTE_GPIO_PORT14_PIN07, GpioOut_Low);
    }
}
