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

📄 main.c

📁 OK2440II开发板全部测试程序
💻 C
字号:
//看门狗的复位功能,超时没有喂狗会引起复位
#include "2440addr.h"
void watchdog_test(void) ;
extern void Uart_Printf(char *fmt,...);
extern void Uart_Init(int baud);

 void ClearPending(int bit);
void ClearSubPending(int bit);
unsigned f_ucSencondNo;

__irq void  watchdog_isr(void);


 
void Main(void)
 
{ 
 f_ucSencondNo=0;
 Uart_Init(115200); 
 Uart_Printf("watchdog test is beginning\n");   
 watchdog_test();

}




void watchdog_test(void) 
{
  
 /****************初始化************************/ 
 //建立WatchDog中断服务程序句柄
	pISR_WDT = (unsigned)watchdog_isr;
	
  //initialize interrupt registers 
	ClearPending(BIT_WDT_AC97);   
	ClearSubPending(BIT_WDT);	

 
  
 /***************启动看门狗*******************/
 
  //Prescaler value=100、clock division factor=128、PCLK=50M
  //t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.00025856 
  //disable watchdog 
  rWTCON=((prescaler_value<<8)|(clock_select<<3));   
  //看门狗时钟周期T=WTCNT*t_watchdog=3.8784S 
  //看门狗喂狗 
  rWTDAT=15000; 
  rWTCNT=15000; 
  rWTCON|=(1<<5)|(1<<2);   //使能WDT定时器和中断 


  //开中断 
  EnableIrq(BIT_WDT_AC97);
  EnableSubIrq(BIT_WDT);
  while(f_ucSencondNo<11);
  while(1) ;

 }
 
 
 
  
 void ClearPending(int bit)
{
	register i;
    rSRCPND &= ~bit; 
    rINTPND |= bit;
	i = rINTPND; 
}

void ClearSubPending(int bit)
{
	register i;
	rSUBSRCPND &= ~bit;	
	i = rINTPND;
} 


 __irq void  watchdog_isr(void)
{
	

	 f_ucSencondNo++;
	 if(f_ucSencondNo<11) 
  	 	Uart_Printf("%ds\n",f_ucSencondNo); 
    else 
    { 
    	
    	DisableIrq(BIT_WDT_AC97); 
    	DisableSubIrq(BIT_WDT);
    	Uart_Printf("watch dog is okooooo\n"); 
    }
	
	ClearPending(BIT_WDT_AC97);
	ClearSubPending(BIT_WDT);	  
}

⌨️ 快捷键说明

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