Files
acquisition_module/PS.H
2025-07-05 07:57:10 +08:00

203 lines
7.2 KiB
C

//****************************************************************************
// @Module Power Saving Modes
// @Filename PS.H
// @Project CL2.0.dav
//----------------------------------------------------------------------------
// @Controller Infineon XC886CLM-8FF
//
// @Compiler Keil
//
// @Codegenerator 1.3
//
// @Description: This file contains all function prototypes and macros for
// the PS module.
//
//----------------------------------------------------------------------------
// @Date 2025/1/21 08:53:36
//
//****************************************************************************
// USER CODE BEGIN (PS_Header,1)
// USER CODE END
#ifndef _PS_H_
#define _PS_H_
//****************************************************************************
// @Project Includes
//****************************************************************************
// USER CODE BEGIN (PS_Header,2)
// USER CODE END
//****************************************************************************
// @Macros
//****************************************************************************
// USER CODE BEGIN (PS_Header,3)
// USER CODE END
//****************************************************************************
// @Defines
//****************************************************************************
// USER CODE BEGIN (PS_Header,4)
// USER CODE END
//****************************************************************************
// @Typedefs
//****************************************************************************
// USER CODE BEGIN (PS_Header,5)
// USER CODE END
//****************************************************************************
// @Imported Global Variables
//****************************************************************************
// USER CODE BEGIN (PS_Header,6)
// USER CODE END
//****************************************************************************
// @Global Variables
//****************************************************************************
// USER CODE BEGIN (PS_Header,7)
// USER CODE END
//****************************************************************************
// @Prototypes Of Global Functions
//****************************************************************************
void PS_vInit(void);
void PS_vSetPowerDown(void);
void PS_vSetSlowDown(void);
void PS_vResetSlowDown(void);
// USER CODE BEGIN (PS_Header,8)
// USER CODE END
//****************************************************************************
// @Macro void PS_vSetIdle()
//
//----------------------------------------------------------------------------
// @Description This macro enters the idle mode by setting bit IDLE in SFR
// PCON. The instruction will stop the CPU immediately. Thus
// any following code will not be executed before the
// controller has been restarted by an interrupt.
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/1/21
//
//****************************************************************************
#define PS_vSetIdle() PCON |= 0x01
//****************************************************************************
// @Macro PS_vDisableModule(ModuleName)
//
//----------------------------------------------------------------------------
// @Description This macro disables a specific peripheral module which is
// passed in a parameter.Switch the page to 1 using the
// statementSFR_PAGE(_su1, SST1); before calling this
// Disable macro.After that again switch back the page to 0
// with the macro SFR_PAGE(_su1, RST1);.The following
// constants are available for 'ModuleName':
// ADC, T2, CCU, SSC, MDU, CAN, CDC, T21, UART1
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters ModuleName:
// Name of the Module
//
//----------------------------------------------------------------------------
// @Date 2025/1/21
//
//****************************************************************************
#define PS_vDisableModule(Module) PS_vDisableModule_(Module)
#define PS_vDisableModule_(Module) PS_vDisableModule_##Module
#define PS_vDisableModule_ADC PMCON1 |= 0x01
#define PS_vDisableModule_T2 PMCON1 |= 0x08
#define PS_vDisableModule_CCU PMCON1 |= 0x04
#define PS_vDisableModule_SSC PMCON1 |= 0x02
#define PS_vDisableModule_MDU PMCON1 |= 0x10
#define PS_vDisableModule_CAN PMCON1 |= 0x20
#define PS_vDisableModule_CDC PMCON1 |= 0x40
#define PS_vDisableModule_T21 PMCON2 |= 0x01
#define PS_vDisableModule_UART1 PMCON2 |= 0x02
//****************************************************************************
// @Macro PS_vEnableModule(ModuleName)
//
//----------------------------------------------------------------------------
// @Description This macro enables a specific peripheral module which is
// passed in a parameter. Switch the page to 1 using the
// statement SFR_PAGE(_su1, SST1); before calling this
// Enable macro.After that again switch back the page to 0
// with the macro SFR_PAGE(_su1, RST1);.The following
// constants are available for 'ModuleName':
// ADC, T2, CCU, SSC, MDU, CAN, CDC, T21, UART1
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters ModuleName:
// Name of the Module
//
//----------------------------------------------------------------------------
// @Date 2025/1/21
//
//****************************************************************************
#define PS_vEnableModule(Module) PS_vEnableModule_(Module)
#define PS_vEnableModule_(Module) PS_vEnableModule_##Module
#define PS_vEnableModule_ADC PMCON1 &= ~(ubyte)0x01
#define PS_vEnableModule_T2 PMCON1 &= ~(ubyte)0x08
#define PS_vEnableModule_CCU PMCON1 &= ~(ubyte)0x04
#define PS_vEnableModule_SSC PMCON1 &= ~(ubyte)0x02
#define PS_vEnableModule_MDU PMCON1 &= ~(ubyte)0x10
#define PS_vEnableModule_CAN PMCON1 &= ~(ubyte)0x20
#define PS_vEnableModule_CDC PMCON1 &= ~(ubyte)0x40
#define PS_vEnableModule_T21 PMCON2 &= ~(ubyte)0x01
#define PS_vEnableModule_UART1 PMCON2 &= ~(ubyte)0x02
// USER CODE BEGIN (PS_Header,9)
// USER CODE END
#endif // ifndef _PS_H_