本帖最后由 swack 于 2013-4-22 10:15 编辑
原有的驱动我做了修改:
static BOOL FeedIt() 我注释掉了
修改了BOOL WDG_IOControl 如下所示:
BOOL WDG_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut)
{
switch(dwCode)
{
case IO_CTL_WDG_OPEN:
v_pWDGregs->WTCON = 0x8021; // Init Value
v_pWDGregs->WTDAT = 0xFEA9;
v_pWDGregs->WTCON = ( 1 << 0) | (0x03 << 3 ) | (1 << 5) | (0x5A << 8);
break;
case IO_CTL_WDG_FEED:
v_pWDGregs->WTCNT = 0xFEA9;
break;
default:
break;
}
return TRUE;
}
以上是修改的bsp的驱动,
一下我应用程序里,我在自己的程序这么用的:
wdgdriver= CreateFile(L"WDG1:",GENERIC_READ | GENERIC_WRITE,
0,NULL,OPEN_EXISTING,0,NULL);
开启看门狗:DeviceIoControl(wdgdriver,IO_CTL_WDG_OPEN,NULL,0,NULL,0,NULL,NULL);
喂狗:DeviceIoControl(wdgdriver,IO_CTL_WDG_FEED,NULL,0,NULL,0,NULL,NULL);
现在的现象是,我没有开启看门狗DeviceIoControl(wdgdriver,IO_CTL_WDG_OPEN,NULL,0,NULL,0,NULL,NULL);
调用,就自动重启了,也就是感觉看门狗打开了,但是我feedit()都注释了,求解啊?!
|