📄 wdog.c.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 + -