hal_wdt.c
来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C语言 代码 · 共 89 行
C
89 行
/**********************************************************************************/
/* */
/* Copyright (C) 2006 Oki Electric Industry Co., LTD. */
/* */
/* System Name : ML675050 series */
/* Module Name : ML675050 system WDT HAL program */
/* File Name : hal_wdt.c */
/* Revision : 01.00 */
/* Date : 2006/1/25 initial version */
/* */
/**********************************************************************************/
#if defined(__arm)
#include "ml675050.h"
#elif defined(_WIN32)
#include "ml675050sim.h"
#else
#error COMPILER ERROR
#endif
#include "common.h"
#include "hal_common.h"
#include "hal_interrupt.h"
#include "hal_wdt.h"
/***********************************/
/* type definition */
/***********************************/
#define WDT_UN_WRITE_PROTECT_VAL_TBGCON (0x5A)
#define WDT_APB_CLK32 (0x00)
#define WDT_APB_CLK64 (0x01)
#define WDT_APB_CLK128 (0x02)
#define WDT_APB_CLK256 (0x03)
#define WDT_APB_CLK512 (0x04)
#define WDT_APB_CLK1024 (0x05)
#define WDT_APB_CLK2048 (0x06)
#define WDT_APB_CLK4096 (0x07)
#define WDT_OVF_INT (0x00)
#define WDT_OVF_RST (0x40)
#define WDT_CNT_CLK_START (0x00)
#define WDT_CNT_CLK_STOP (0x80)
/***********************************/
/* Static functions prototype */
/***********************************/
extern void _wdt_handler( void );
FP wdt_handler = _wdt_handler;
/*****************************************************************************/
/* */
/* Function Name : HALWDT_WDTInit */
/* Input : mode */
/* : (0)interrupt mode */
/* : (1)reset mode */
/* Output : HAL_OK(1) */
/* : HAL_PARAM_ERROR(-2) */
/* */
/* Note : Initialize WDT. */
/* */
/*****************************************************************************/
int16_t HALWDT_WDTInit( uint16_t mode )
{
int16_t rtnVal = HAL_OK;
OkiCLib_write32(TBGCON, WDT_UN_WRITE_PROTECT_VAL_TBGCON); /* enable writing to TBGCON register */
OkiCLib_write32(TBGCON, (uint32_t)(WDT_APB_CLK32|((mode<<6)&TBGCON_OFINTMODE)|WDT_CNT_CLK_START)); /* CCLK/256, when WDT overflowed, interrupt occurs */
return rtnVal;
}
/*****************************************************************************/
/* */
/* Function Name : void wdt_handler( void ) */
/* Input : Noting */
/* Output : Noting */
/* */
/* Note : WDT handler. */
/* */
/*****************************************************************************/
void _wdt_handler( void )
{
OkiCLib_clr32bit(INTST, INTST_WDTINT); /* clear WDT interrupt */
CALL_BACK_TABLE[INT_WDT](CALLBACK_STATE_NON); /* when WDT overflowed, interrupt occurs */
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?