//**************************************************************************** // @Module GPIO // @Filename IO.C // @Project CL2.0.dav //---------------------------------------------------------------------------- // @Controller Infineon XC886CLM-8FF // // @Compiler Keil // // @Codegenerator 1.3 // // @Description: This file contains functions that use the IO module. // //---------------------------------------------------------------------------- // @Date 2021/9/7 09:54:12 // //**************************************************************************** // USER CODE BEGIN (IO_General,1) // USER CODE END //**************************************************************************** // @Project Includes //**************************************************************************** #include "MAIN.H" // USER CODE BEGIN (IO_General,2) // USER CODE END //**************************************************************************** // @Macros //**************************************************************************** // USER CODE BEGIN (IO_General,3) // USER CODE END //**************************************************************************** // @Defines //**************************************************************************** // USER CODE BEGIN (IO_General,4) // USER CODE END //**************************************************************************** // @Typedefs //**************************************************************************** // USER CODE BEGIN (IO_General,5) // USER CODE END //**************************************************************************** // @Imported Global Variables //**************************************************************************** // USER CODE BEGIN (IO_General,6) // USER CODE END //**************************************************************************** // @Global Variables //**************************************************************************** // USER CODE BEGIN (IO_General,7) // USER CODE END //**************************************************************************** // @External Prototypes //**************************************************************************** // USER CODE BEGIN (IO_General,8) // USER CODE END //**************************************************************************** // @Prototypes Of Local Functions //**************************************************************************** // USER CODE BEGIN (IO_General,9) // USER CODE END //**************************************************************************** // @Function void IO_vInit(void) // //---------------------------------------------------------------------------- // @Description This is the initialization function of the IO function // library. It is assumed that the SFRs used by this library // are in their reset state. // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters None // //---------------------------------------------------------------------------- // @Date 2021/9/7 // //**************************************************************************** // USER CODE BEGIN (IO_Init,1) // USER CODE END void IO_vInit(void) { // USER CODE BEGIN (IO_Init,2) ubyte i = 0; // ubyte j = 0; // USER CODE END /// *********************************************************************** /// Note : All peripheral related IO configurations are done in the /// respective peripheral modules (alternate functions selection) /// /// If no pins are selected DAvE assumes that registers are in default /// settings /// *********************************************************************** /// ----------------------------------------------------------------------- /// Configuration of Port P0: /// ----------------------------------------------------------------------- /// P0.0: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P0.1: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P0.2: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P0.3: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P0.7: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned SFR_PAGE(_pp1, noSST); // switch to page 1 P0_PUDSEL = 0x70; // load pullup/pulldown select register P0_PUDEN = 0xCF; // load pullup/pulldown enable register SFR_PAGE(_pp0, noSST); // switch to page 0 P0_DIR = 0x8F; // load direction register /// ----------------------------------------------------------------------- /// Configuration of Port P1: /// ----------------------------------------------------------------------- /// P1.0: /// - is used as alternate input for the MCAN Node 0 Receiver Input /// - pull-up device is assigned /// P1.1: /// - is used as alternate output for the MCAN Node 0 Transmitter Output /// - push/pull output is selected /// - pull-up device is assigned /// P1.2: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P1.3: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P1.4: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P1.5: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P1.7: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned SFR_PAGE(_pp1, noSST); // switch to page 1 P1_PUDSEL = 0x43; // load pullup/pulldown select register SFR_PAGE(_pp0, noSST); // switch to page 0 P1_DIR = 0xBC; // load direction register /// ----------------------------------------------------------------------- /// Configuration of Port P2: /// ----------------------------------------------------------------------- /// P2.4: /// - is used as general input /// - input driver is enabled /// - pull-up device is assigned /// P2.5: /// - is used as general input /// - input driver is enabled /// - pull-up device is assigned /// P2.6: /// - is used as general input /// - input driver is enabled /// - pull-up device is assigned /// P2.7: /// - is used as general input /// - input driver is enabled /// - pull-up device is assigned SFR_PAGE(_pp1, noSST); // switch to page 1 P2_PUDEN = 0xF0; // load pullup/pulldown enable register /// ----------------------------------------------------------------------- /// Configuration of Port P3: /// ----------------------------------------------------------------------- /// P3.0: /// - is used as general input /// - pull-up device is assigned /// P3.1: /// - is used as general input /// - pull-up device is assigned /// P3.2: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P3.3: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P3.4: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P3.5: /// - is used as general purpose output /// - open drain output is selected /// - the pin status is high level /// - pull-up device is assigned /// P3.6: /// - is used as general input /// - pull-up device is assigned /// P3.7: /// - is used as general input /// - pull-up device is assigned SFR_PAGE(_pp3, noSST); // switch to page 3 P3_OD = 0x20; // load open-drain register SFR_PAGE(_pp1, noSST); // switch to page 1 P3_PUDSEL = 0xE3; // load pullup/pulldown select register P3_PUDEN = 0xFF; // load pullup/pulldown enable register SFR_PAGE(_pp0, noSST); // switch to page 0 P3_DIR = 0x3C; // load direction register P3_DATA = 0x20; // load data output register /// ----------------------------------------------------------------------- /// Configuration of Port P4: /// ----------------------------------------------------------------------- /// P4.0: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P4.1: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned /// P4.3: /// - is used as general purpose output /// - push/pull output is selected /// - the pin status is low level /// - pull-down device is assigned SFR_PAGE(_pp1, noSST); // switch to page 1 P4_PUDSEL = 0x00; // load pullup/pulldown select register P4_PUDEN = 0x0B; // load pullup/pulldown enable register SFR_PAGE(_pp0, noSST); // switch to page 0 P4_DIR = 0x0B; // load direction register // USER CODE BEGIN (IO_Init,3) if((0x55 != RestartDataFlg1) || (0x55 != RestartDataFlg2))//只要有一个值不相同,说明为上电重启 { for(i=0;i<8;i++)//0xF5E8~0xF5FF { UnInfCan_1.ArrData.Arr[0][i] = 0; UnInfCan_1.ArrData.ArrRX[0][i] = 0; UnInfCan_1.ArrData.ArrRX[1][i] = 0; } RestartDataFlg1 = 0x55;//正常运行状态,就需要赋值为0x55 0xF5E7 RestartDataFlg2 = 0x55;//地址0xF600 dfOut_01 = 0;//重新上电,初始化 dfOut_02 = 0; dfOut_03 = 0; dfOut_04 = 0; dfOut_05 = 0; dfOut_06 = 0; dfOut_07 = 0; dfOut_08 = 0; dfOut_09 = 0; dfOut_10 = 0; dfOut_11 = 0; dfOut_12 = 0; dfOut_13 = 0; dfOut_14 = 0; dfOut_15 = 0; dfOut_16 = 0; RestartDataKGF = 0; } else//重启,IO口就恢复 { dfOut_01 = (bit)(RestartDataKGF&0x0001); //20210906恢复IO口状态 解决KGF重启指示灯闪烁问题 注意ubyte转为bit类型,不是直接取最低为,而是根据该值为0就取0,为1就取1 dfOut_02 = (bit)((RestartDataKGF >> 1)&0x0001); dfOut_03 = (bit)((RestartDataKGF >> 2)&0x0001); dfOut_04 = (bit)((RestartDataKGF >> 3)&0x0001); dfOut_05 = (bit)((RestartDataKGF >> 4)&0x0001); dfOut_06 = (bit)((RestartDataKGF >> 5)&0x0001); dfOut_07 = (bit)((RestartDataKGF >> 6)&0x0001); dfOut_08 = (bit)((RestartDataKGF >> 7)&0x0001); dfOut_09 = (bit)((RestartDataKGF >> 8)&0x0001); dfOut_10 = (bit)((RestartDataKGF >> 9)&0x0001); dfOut_11 = (bit)((RestartDataKGF >> 10)&0x0001); dfOut_12 = (bit)((RestartDataKGF >> 11)&0x0001); dfOut_13 = (bit)((RestartDataKGF >> 12)&0x0001); dfOut_14 = (bit)((RestartDataKGF >> 13)&0x0001); dfOut_15 = (bit)((RestartDataKGF >> 14)&0x0001); dfOut_16 = (bit)((RestartDataKGF >> 15)&0x0001); } // USER CODE END } // End of function IO_vInit // USER CODE BEGIN (IO_General,10) // USER CODE END