📄 main.c
字号:
#include "2410addr.h"
#include "2410lib.h"
#include "timer.h"
#define WATCH_ENABLE
#define WDT_ENABLE (0x01<<5)
#define WDT_INT_ENABLE (0x01<<2)
#define WDT_RST_ENABLE (0x01<<0)
#define WDT_CLK_SEL (0X03<<3) /* 1/128 */
#define WDT_PRE_SCALER (0XFF<<8) /* 255 */
void watchdog_test(void);
void watchdog_int(void);
//复位次数
int f_ucSencondNo=0;
/*************************************************
Function name: Main
Parameter : void
Description : 主功能函数
Return : void
Argument : void
Autor & date :
**************************************************/
int Main(void)
{
SetClockDivider(1, 1);//FLCK:HCLK:PCLK=1:2:4
SetSysFclk(DFT_FCLK_VAL);//Fout=200MHZ
Port_Init();
Uart_Select(0);
Uart_Init(0, UART_BAUD);
Uart_Printf("watchdog test is beginning\n");
watchdog_test();
}
/**********************************
watchdog_init
watchdog interrupt service routine
************************************/
void watchdog_test(void)
{
//initialize interrupt registers
ClearPending(BIT_WDT);
//建立WatchDog中断
pISR_WDT=(unsigned)watchdog_int;
//Prescaler value=100/clock division factor=128
//t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.00025856
rWTCON=((100<<8)|(3<<3));//disable watchdog
//看门狗时钟周期T=WTCNT*t_watchdog=4S
//看门狗喂狗
rWTDAT=15000;
rWTCNT=15000;
rWTCON|=((1<<5)|(1<<2));//enable Watchdog timer ang watchdog interrupt
//清除watchdog中断屏蔽位
rINTMOD&=0xFFFFFDFF;
while(f_ucSencondNo<11);
}
/**** watchdog_init ****/
void watchdog_int(void)
{
//清除中断
ClearPending(BIT_WDT);
f_ucSencondNo++;
if(f_ucSencondNo<<11)
Uart_Printf("%ds",f_ucSencondNo);
else
{
rINTMSK|=0x200;//mask watchdog timer interrupt
Uart_Printf("watch dog is ok\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -