watchdog.c

来自「2410一些基本试验的源码」· C语言 代码 · 共 72 行

C
72
字号
#include "2410addr.h"
#include "2410lib.h"
#include "timer.h"

void __irq watchdog_int(void);

int l=0,j=0;
void watch_int(void)
{
	ClearPending(BIT_WDT);

	Uart_Printf("watchdog_int is beginning\n");
	
	rWTCON=(100<<8)|(3<<3);//Prescaler=100,1/128,divisioner   
	//t=101*128/50*10e-6=0.00025856s
	
	rWTDAT=155;  
	rWTCNT=155;
	
	rWTCON|=(1<<2)|(1<<5);
	//rWTCON&=(0<<0);
	//rINTMOD&=0xFFFFFDFF;
	EnableIrq(BIT_WDT);
	//while(l<30);
}

void __irq watchdog_int(void)
{
	ClearPending(BIT_WDT);
	if(j<15)
	{
		l++;
		Uart_Printf("watchdoghander is beginning\n");
	}
	else
	{
		rWTDAT=15500;  
		rWTCNT=15500;
	
		//rWTCON &= ~(3<<1);
		rWTCON|=((1<<5)|(1<<0));
		while(1)
		Uart_Printf("watchdoghander is over\n");
	}
}

int Main()
{	
	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");
	
	
	rGPFCON=(rGPFCON&0x00ff)|0x5500;
	rGPFUP=0;
	rGPFDAT&=0x00ff;
	pISR_WDT=(unsigned)watchdog_int;
	watch_int();	
	while(1)
	{
		if(l==25)
			{
				rGPFDAT=~rGPFDAT;
				l=0;
				j++;
		    }
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?