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

📄 wdog.c.svn-base

📁 Spearhead2000 的 USB驱动程序
💻 SVN-BASE
字号:
/********************************************************************************                                                                           ****  Copyright (c) 1999 ST Microelectronics                                   ****  All rights reserved                                                      ****                                                                           ****      Filename  :  wdog.c                                                  ****      Author    :  Gianfranco Di Nuzzo                                     ****      Revision  :  1.0                                                     ****                                                                           ****                                                                           ****                                                                           *********************************************************************************/#include "wdog.h"#include "gpio.h"#include "uart.h"voidwdogInit(void){  WDOGCntl->CTRL &= ~CTRL_ENABLE;}voidwdogResult(void){	char resstatus;	resstatus = WDOGCntl->STATUS & STATUS_WDOGRST; // read after reset status reg	if (resstatus == 0) {	       UART_tx_vec("Reset HW", strlen("Reset HW"));		}	else {                 UART_tx_vec("Reset WDOG", strlen("Reset WDOG"));				}}voidwdogRegTest(void){	// Write/Read all zeroes	WDOGCntl->MAXCNT = 0x00;  		// set max counter to 00 value        WDOGCntl->CTRL = ~CTRL_FAST & ~CTRL_ENABLE & ~CTRL_CLEAR & ~CTRL_DBGFRZ; // set control register to 0x00 value	if (WDOGCntl->MAXCNT != 0x00) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	if ((WDOGCntl->CTRL & CTRL_FAST) == 0x8) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	if ((WDOGCntl->CTRL & CTRL_DBGFRZ) == 0x4) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	if ((WDOGCntl->CTRL & CTRL_ENABLE) == 0x2) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	if ((WDOGCntl->CTRL & CTRL_CLEAR) == 0x1) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	// Write/Read all ones (EXCEPT CTRL_ENABLE)	WDOGCntl->MAXCNT = 0xFF;  		// set max counter to FF value	WDOGCntl->CTRL = ( CTRL_FAST | CTRL_DBGFRZ | CTRL_CLEAR ) & ~CTRL_ENABLE;	if (WDOGCntl->MAXCNT == 0xFF) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	if ((WDOGCntl->CTRL & CTRL_FAST) == 0x8) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	if ((WDOGCntl->CTRL & CTRL_DBGFRZ) == 0x4) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	if ((WDOGCntl->CTRL & CTRL_ENABLE) == 0x2) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}	if ((WDOGCntl->CTRL & CTRL_CLEAR) == 0x1) {		gpioWrite(2, 0);		gpioWrite(0, 1);		gpioWrite(2, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(0, 1);		gpioWrite(2, 0);		gpioWrite(0, 0);		}	else { 		gpioWrite(2, 0);		gpioWrite(0, 0);		gpioWrite(2, 1);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(0, 0);		gpioWrite(2, 0);		gpioWrite(0, 1);		}		}void wdogTest(void){//  	WDOGCntl->MAXCNT = 0xFF;  		// set max counter to 01 value        WDOGCntl->MAXCNT = 0x0F;                // set max counter to 01 value 	WDOGCntl->STATUS = 0x00;  		// reset status value	WDOGCntl->CTRL = (  CTRL_ENABLE | CTRL_CLEAR ) & ~CTRL_DBGFRZ;	/* Control register set to = 1011 = start with fast mode */ }

⌨️ 快捷键说明

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