⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 2410 实验4 看门狗应用实验 ADS环境
💻 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 + -