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

📄 w83627hf_test.c

📁 主板上提供一个可按分或秒计时的
💻 C
字号:
#include <stdio.h>#include <sys/fcntl.h>#include <sys/ioctl.h>#include <sys/signal.h>#include <unistd.h>#include "w83627hf_wdt.h"#define WDT_DEVICE "/dev/watchdog"#define WATCHDOG_TIMEOUT 30 /* 根据传入的参数处理各种ioctl操作 */void wdt_ioctl(int fd, unsigned int cmd, unsigned long arg){	struct watchdog_info *argp = (struct watchdog_info *)arg;	int *p = (int *)arg;	int ret;	switch (cmd)	{		case WDIOC_GETSUPPORT:/* 获取wdt_all_info */			ioctl(fd, cmd, argp);			if(argp->options & WDIOF_KEEPALIVEPING)				printf("WDIOF_KEEPALIVEPING\n");			if(argp->options & WDIOF_SETTIMEOUT)				printf("WDIOF_SETTIMEOUT\n");			if(argp->options & WDIOF_MAGICCLOSE)				printf("WDIOF_MAGICCLOSE\n");			printf("firmware_version:%d\n", argp->firmware_version);			printf("identity:%s\n", argp->identity);			break;		case WDIOC_GETSTATUS:			ioctl(fd, cmd, p);			printf("status:%d\n", *p);			break;		case WDIOC_SETTIMEOUT:/* 设置超时值 */			ret = ioctl(fd, cmd, p);			if(ret == 0)				printf("settimeout success!\n");			else				printf("settimeout failed!\n");			break;		case WDIOC_SETOPTIONS:/* 设置看门狗状态,开启/禁用 */			ret = ioctl(fd, cmd, p);			printf("wdt enable ret is:%d\n", ret);			break;		case WDIOC_GETTIMEOUT:/* 获取超时值 */			ret = ioctl(fd, cmd, p);			if(ret == 0)				printf("timeout: %d\n", *p);			else				printf("gettimeout failed!\n");			break;		default:	  		return;	}}int main(int argc,char *argv[]){	int wdt;	struct watchdog_info info;	unsigned long arg=0;	wdt = open(WDT_DEVICE, O_RDWR);/* 打开设备 */	if(wdt < 0)	{	printf("I can not open watchdog\n");	return 1;	}	//ioctl	wdt_ioctl(wdt, WDIOC_GETSUPPORT, (unsigned long)&info);/* 获取看门狗信息 */	wdt_ioctl(wdt, WDIOC_GETSTATUS, (unsigned long)&arg);	wdt_ioctl(wdt, WDIOC_GETTIMEOUT, (unsigned long)&arg);/* 获取看门狗超时值 */	//enable watchdog	arg = WDIOS_ENABLECARD;	wdt_ioctl(wdt, WDIOC_SETOPTIONS, (unsigned long)&arg);/* 开启看门狗 */	//set new timeout 	arg = WATCHDOG_TIMEOUT;	wdt_ioctl(wdt, WDIOC_SETTIMEOUT, (unsigned long)&arg);/* 设置看门狗超时值为WATCHDOG_TIMEOUT */	wdt_ioctl(wdt, WDIOC_GETTIMEOUT, (unsigned long)&arg);/* 获取看门狗超时值 */	while (1)//fee watchdog	{		arg = WATCHDOG_TIMEOUT;		write(wdt, &arg, sizeof(arg));/* 喂狗 */		sleep(1);	}	close(wdt);	return 0;}

⌨️ 快捷键说明

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