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

📄 main.c

📁 三星ARM2410的WDT看门狗程序实验
💻 C
字号:
/*=============================================================================
--------------------------------- Copy Left -----------------------------------
						Illidan Fly's Project
						Power by BigFly Network
						http://bigfly.happybobby.com
						
						Released under GPL2 License

----------------------------- File Description --------------------------------
 Filename:	main.c
 Date:		2007.01.03
 Version:	0.0.1
 Description:

----------------------------- Version History ---------------------------------
 0.0.1: First release

=============================================================================*/

#include "2410addr.h"
#include "target.h"
#include "2410lib.h"

void __irq isr_wdt(void)
{
	rINTMSK = rINTMSK | BIT_WDT;
	
	Uart_Printf("You havn't press any key in 10 seconds.\n");
	
	// 清除中断位
	rINTPND = BIT_WDT;
	rSRCPND = BIT_WDT;
	
	rINTMSK = rINTMSK & ~BIT_WDT;
}

void main(void)
{
	int fc1=0;
	char tmpchar;
	
	Uart_Printf("CITK2410 WDT demo.\n");

	// Init target board (call this function before anything can go!)
	Target_Init();
	
	// 初始化 WDT 控制器
	// WDT 时钟频率计算方法:
	// WDT时钟频率=(PCLK/(分频因子+1))/除数因子
	// 在本例子里,PCLK=50.7MHz,要使 WDT 在10秒倒数完毕,则:
	// 设置分频因子为49,除数因子为128,可得WDT时钟频率为7921.875
	// 所以,WTDAT的初始值为7921.875*10=79219
	rWTCON = (49<<8) | (0<<5) | (3<<3) | (1<<2) | (0);
	rWTDAT = 79219;
	rWTCNT = rWTDAT;
	
	// 设置 WDT 中断服务程序
	pISR_WDT = (unsigned int)isr_wdt;
	
	// 打开 WDT 中断
	rINTMSK = rINTMSK & ~BIT_WDT;
	
	Uart_Printf("Select WDT Test method, Press:\n1 for WDT interrupt.\n2 for WDT reset.\n");
	tmpchar = Uart_Getch();
	
	if(tmpchar=='1')
	{
		rWTCON = (49<<8) | (1<<5) | (3<<3) | (1<<2) | (0);
	}
	else if(tmpchar=='2')
	{
		rWTCON = (49<<8) | (1<<5) | (3<<3) | (0<<2) | (1);
	}
	else
	{
		Uart_Printf("Invalid selection. System will now reset.\n");
		rWTDAT = 1;
		rWTCON = (0<<8) | (1<<5) | (0<<3) | (1<<2) | (1);
		while(1){;}
	}
	
	while(1)
	{
		Uart_Printf("Times:%d Press any key in 10 seconds.\n",fc1++);
		tmpchar = Uart_Getch();
		// 喂狗
		rWTCNT = rWTDAT;
	}
}

⌨️ 快捷键说明

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