Files
RC/WDT.C
2025-10-21 20:34:06 +08:00

205 lines
6.2 KiB
C

//****************************************************************************
// @Module Watch Dog Timer
// @Filename WDT.C
// @Project CL2.0.dav
//----------------------------------------------------------------------------
// @Controller Infineon XC886CLM-8FF
//
// @Compiler Keil
//
// @Codegenerator 1.3
//
// @Description: This file contains functions that use the WDT module.
//
//----------------------------------------------------------------------------
// @Date 2025/1/18 20:45:32
//
//****************************************************************************
// USER CODE BEGIN (WDT_General,1)
// USER CODE END
//****************************************************************************
// @Project Includes
//****************************************************************************
#include "MAIN.H"
// USER CODE BEGIN (WDT_General,2)
// USER CODE END
//****************************************************************************
// @Macros
//****************************************************************************
// USER CODE BEGIN (WDT_General,3)
// USER CODE END
//****************************************************************************
// @Defines
//****************************************************************************
// USER CODE BEGIN (WDT_General,4)
// USER CODE END
//****************************************************************************
// @Typedefs
//****************************************************************************
// USER CODE BEGIN (WDT_General,5)
// USER CODE END
//****************************************************************************
// @Imported Global Variables
//****************************************************************************
// USER CODE BEGIN (WDT_General,6)
// USER CODE END
//****************************************************************************
// @Global Variables
//****************************************************************************
// USER CODE BEGIN (WDT_General,7)
// USER CODE END
//****************************************************************************
// @External Prototypes
//****************************************************************************
// USER CODE BEGIN (WDT_General,8)
// USER CODE END
//****************************************************************************
// @Prototypes Of Local Functions
//****************************************************************************
// USER CODE BEGIN (WDT_General,9)
// USER CODE END
//****************************************************************************
// @Function void WDT_vInit(void)
//
//----------------------------------------------------------------------------
// @Description This is the initialization function of the 'Watch Dog
// Timer' function library. It is assumed that the SFRs used
// by this library are in their reset state.
//
// The watchdog timer is used.
// The following SFR fields will be initialized:
// WDTREL - WDT reload value
// WDTIN - WDT input frequency selection
// Then the watchdog timer will be refreshed.
// Note: The user has to take care that RMAP bit in SYSCON0 is
// to be set while using the registers of Watch dog timer.
// Registers are WDTCON,WDTWINB,WDTREL,WDTH,WDTL
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/1/18
//
//****************************************************************************
// USER CODE BEGIN (WDT_Init,1)
// USER CODE END
void WDT_vInit(void)
{
// USER CODE BEGIN (WDT_Init,2)
// USER CODE END
/// the watchdog timer is used and it is enabled in INIT function,user has
/// to take care of WDT refresh
/// the RMAP bit of SYSCON0 is set
/// the input frequency is fSYS/128
/// the watchdog timer reload value is 0xDB
/// the watchdog timeout period is 50 ms
SFR_PAGE(_su1, noSST); // switch to page1 without saving
MAIN_vUnlockProtecReg(); // open access to protected register
SET_RMAP();
WDTCON |= 0x04; // set WDTEN
WDTREL = 0xDB; //Watch dog timer reload register
WDTCON |= 0x03; // set WDTRS,set WDTIN
RESET_RMAP();
MAIN_vlockProtecReg(); // close access to protected register
SFR_PAGE(_su0, noSST); // switch to page0 with out saving
// USER CODE BEGIN (WDT_Init,3)
// USER CODE END
} // End of function WDT_vInit
//****************************************************************************
// @Function void WDT_vDisable(void)
//
//----------------------------------------------------------------------------
// @Description This function disables the WDT.
// pls refer to the Note on WDT_vInit function Description
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/1/18
//
//****************************************************************************
void WDT_vDisable(void)
{
SFR_PAGE(_su1, noSST); // switch to page1 without saving
MAIN_vUnlockProtecReg(); // open access to protected register
SFR_PAGE(_su0, noSST); // switch to page0 with out saving
SET_RMAP();
WDTCON &= ~(ubyte)0x04; // clear WDTEN
RESET_RMAP();
SFR_PAGE(_su1, noSST); // switch to page1 without saving
MAIN_vlockProtecReg(); // close access to protected register
SFR_PAGE(_su0, noSST); // switch to page0 with out saving
} // End of function WDT_vDisable
// USER CODE BEGIN (WDT_General,10)
// USER CODE END