RT-Thread--设备(IWDG)

#define IWDG_DEVICE_NAME "wdt"   /*wdt device name*/
static rt_device_t wdg_dev;      /*wdt device pointer*/

static void idle_hook(void)
{
    rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
}

static int iwdg_sample(void)
{
    rt_err_t ret = RT_EOK;
    rt_uint32_t settimeout = 100000;       /*timeout*/
    rt_uint32_t gettimeout = 0;
    rt_uint32_t lefttime = 0;
    
    /*find device*/
    wdg_dev = rt_device_find(IWDG_DEVICE_NAME);
    
    if (!wdg_dev)
    {
        rt_kprintf("find %s failed!\n", IWDG_DEVICE_NAME);
        return RT_ERROR;
    }
    /*init device*/
    ret = rt_device_init(wdg_dev);
    
    if (ret != RT_EOK)
    {
        rt_kprintf("initialize %s failed!\n", IWDG_DEVICE_NAME);
        return RT_ERROR;
    }
    /*set wdt timeout*/
    ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_SET_TIMEOUT, &settimeout);

    if (ret != RT_EOK)
    {
        rt_kprintf("set %s timeout failed!\n", IWDG_DEVICE_NAME);
        return RT_ERROR;
    }
    
    ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_GET_TIMELEFT, &lefttime);

    if (ret != RT_EOK)
    {
        rt_kprintf("get %s left time failed!\n", IWDG_DEVICE_NAME);
        return RT_ERROR;
    }
    
    ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_GET_TIMEOUT, &gettimeout);

    if (ret != RT_EOK)
    {
        rt_kprintf("get %s timeout failed!\n", IWDG_DEVICE_NAME);
        return RT_ERROR;
    }
    /*set idle thread hook*/
    rt_thread_idle_sethook(idle_hook);

    ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_START, &gettimeout);

    if (ret != RT_EOK)
    {
        rt_kprintf("start %s  failed!\n", IWDG_DEVICE_NAME);
        return RT_ERROR;
    }
    
    return ret;
}

MSH_CMD_EXPORT(iwdg_sample, iwdg sample);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值