53 lines
1.0 KiB
C
53 lines
1.0 KiB
C
|
|
#include <rtthread.h>
|
|
#include <rtdevice.h>
|
|
|
|
#include "chrg_wdt.h"
|
|
|
|
#define LOG_TAG "chrg.wdt"
|
|
#define DBG_LEVEL DBG_LOG
|
|
#include <rtdbg.h>
|
|
|
|
struct chrg_wdt_t chrgwdt = {
|
|
.dev = RT_NULL,
|
|
.name = DEV_NAME_WATCHDOG,
|
|
.feed = 3,
|
|
};
|
|
|
|
void chrg_wdt_feed (void)
|
|
{
|
|
rt_device_control(chrgwdt.dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, RT_NULL);
|
|
}
|
|
|
|
static int chrg_wdt_init (void)
|
|
{
|
|
rt_err_t ret;
|
|
struct chrg_wdt_t *pWDT = &chrgwdt;
|
|
|
|
pWDT->dev = rt_device_find(pWDT->name);
|
|
if (RT_NULL == pWDT->dev) {
|
|
rt_kprintf("dev '%s' not found.\r\n", pWDT->name);
|
|
return RT_ERROR;
|
|
}
|
|
|
|
ret = rt_device_control(chrgwdt.dev, RT_DEVICE_CTRL_WDT_SET_TIMEOUT, &pWDT->feed);
|
|
if (RT_EOK != ret) {
|
|
rt_kprintf("dev '%s' control failed.\r\n", pWDT->name);
|
|
return ret;
|
|
}
|
|
|
|
ret = rt_device_control(chrgwdt.dev, RT_DEVICE_CTRL_WDT_START, RT_NULL);
|
|
if (RT_EOK != ret) {
|
|
rt_kprintf("dev '%s' start failed.\r\n", pWDT->name);
|
|
return ret;
|
|
}
|
|
|
|
//rt_thread_idle_sethook(chrg_wdt_feed);
|
|
|
|
return RT_EOK;
|
|
}
|
|
|
|
INIT_APP_EXPORT(chrg_wdt_init);
|
|
|
|
|