TT12-MCU/applications/iwdg_sample.c

85 lines
2.5 KiB
C
Raw Normal View History

2023-04-27 09:29:44 +00:00
/*
* Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2018-09-25 misonyo first edition.
*/
/*
* 使
* iwdg_sample
* iwdg_sample iwg
* 使使
*
* 线
*/
#include <rtthread.h>
#include <rtdevice.h>
#define IWDG_DEVICE_NAME "wdt" /* 看门狗设备名称 */
rt_device_t wdg_dev; /* 看门狗设备句柄 */
2023-04-27 09:29:44 +00:00
static void idle_hook(void)
{
/* 在空闲线程的回调函数里喂狗 */
// rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
// rt_thread_mdelay(500);
2023-04-27 09:29:44 +00:00
// rt_kprintf("feed the dog!\n ");
}
static int iwdg_sample(int argc, char *argv[])
{
rt_err_t ret = RT_EOK;
rt_uint32_t timeout = 10; /* 溢出时间 10 秒 */
char device_name[RT_NAME_MAX];
/* 判断命令行参数是否给定了设备名称 */
if (argc == 2)
{
rt_strncpy(device_name, argv[1], RT_NAME_MAX);
}
else
{
rt_strncpy(device_name, IWDG_DEVICE_NAME, RT_NAME_MAX);
}
/* 根据设备名称查找看门狗设备,获取设备句柄 */
wdg_dev = rt_device_find(device_name);
if (!wdg_dev)
{
rt_kprintf("find %s failed!\n", device_name);
return -RT_ERROR;
}
/* 初始化设备 */
ret = rt_device_init(wdg_dev);
if (ret != RT_EOK)
{
rt_kprintf("initialize %s failed!\n", device_name);
return -RT_ERROR;
}
/* 设置看门狗溢出时间 */
ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_SET_TIMEOUT, &timeout);
if (ret != RT_EOK)
{
rt_kprintf("set %s timeout failed!\n", device_name);
return -RT_ERROR;
}
ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_START, RT_NULL);
if (ret != RT_EOK)
{
rt_kprintf("start %s failed!\n", device_name);
return -RT_ERROR;
}
/* 设置空闲线程回调函数 */
// rt_thread_idle_sethook(idle_hook);
2023-04-27 09:29:44 +00:00
return ret;
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(iwdg_sample, iwdg sample);
/* 导出到自动初始化 */
//INIT_DEVICE_EXPORT(iwdg_sample);