0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【英飞凌开发板模块评测任务大挑战】看门狗外事使用

冬至子 来源:chejia12 作者:chejia12 2023-08-11 17:08 次阅读

3.看门狗的使用

这里依然使用mdk的看法环境,使用mdk编译程序,下载程序

3.1使能看门狗的驱动

1.jpg

3.2看门狗测试函数

/*
程序在空闲钩子函数内部喂狗操作,如果不喂狗mcu将在5S后自动复位重启
/
#include
#include
#define WDT_DEVICE_NAME "wdt" /
看门狗设备名称 /
static rt_device_t wdg_dev; /
看门狗设备句柄 /
static void idle_hook(void)
{
/
在空闲线程的回调函数里喂狗 如果不喂狗设备将重启*/
// rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
// rt_kprintf("feed the dog!n ");
}
/ 看门狗测试 /
int wdt_sample(void)
{
rt_err_t ret = RT_EOK;
rt_uint32_t timeout = 5; /* 溢出时间,单位:秒 /
/
根据设备名称查找看门狗设备,获取设备句柄 /
wdg_dev = rt_device_find(WDT_DEVICE_NAME);
if (!wdg_dev)
{
rt_kprintf("find %s failed!n", WDT_DEVICE_NAME);
return RT_ERROR;
}
/
初始化设备 /
rt_device_init(wdg_dev);
/
设置看门狗溢出时间 /
ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_SET_TIMEOUT, &timeout);
if (ret != RT_EOK)
{
rt_kprintf("set %s timeout failed!n", WDT_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", WDT_DEVICE_NAME);
return -RT_ERROR;
}
/
设置空闲线程回调函数 /
rt_thread_idle_sethook(idle_hook);
return ret;
}
/
导出到 msh 命令列表中 */
MSH_CMD_EXPORT(wdt_sample, wdt sample);

3.3测试结果

1.jpg

3.4看门狗设备驱动框架的学习

实现看门狗的初始化函数

实现看门狗的控制函数,根据命令类型实现不同的功能

注册看门狗设备到设备驱动框架

#ifndef WATCHDOG_H
#define WATCHDOG_H
#include
/ 命令类型 合计6种 /
#define RT_DEVICE_CTRL_WDT_GET_TIMEOUT (RT_DEVICE_CTRL_BASE(WDT) + 1) /* 获取超时时间 get timeout(in seconds) /
#define RT_DEVICE_CTRL_WDT_SET_TIMEOUT (RT_DEVICE_CTRL_BASE(WDT) + 2) /
设置超时时间 set timeout(in seconds) /
#define RT_DEVICE_CTRL_WDT_GET_TIMELEFT (RT_DEVICE_CTRL_BASE(WDT) + 3) /
在重新启动之前获取剩余时间 get the left time before reboot(in seconds) /
#define RT_DEVICE_CTRL_WDT_KEEPALIVE (RT_DEVICE_CTRL_BASE(WDT) + 4) /
喂狗 refresh watchdog /
#define RT_DEVICE_CTRL_WDT_START (RT_DEVICE_CTRL_BASE(WDT) + 5) /
开启看门狗 start watchdog /
#define RT_DEVICE_CTRL_WDT_STOP (RT_DEVICE_CTRL_BASE(WDT) + 6) /
关闭看门狗 stop watchdog */
struct rt_watchdog_ops;
struct rt_watchdog_device
{
struct rt_device parent;/ 父类基本的设别操作框架 /
const struct rt_watchdog_ops ops;/看门狗独有的操作函数 /
};
typedef struct rt_watchdog_device rt_watchdog_t;
/*看门狗操作函数

  1. 看门狗初始化函数
  2. 看门狗控制函数,根据 函数cmd 的类型控制看门狗
    */
    struct rt_watchdog_ops
    {
    rt_err_t (*init)(rt_watchdog_t *wdt);//初始化函数
    rt_err_t (*control)(rt_watchdog_t *wdt, int cmd, void *arg);//看门狗控制函数
    };
    / 看门狗外设设备注册函数 /
    rt_err_t rt_hw_watchdog_register(rt_watchdog_t *wdt,
    const char *name,
    rt_uint32_t flag,
    void data);
    #endif /
    WATCHDOG_H */
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动器
    +关注

    关注

    53

    文章

    8259

    浏览量

    146604
  • 控制器
    +关注

    关注

    112

    文章

    16398

    浏览量

    178533
  • 看门狗
    +关注

    关注

    10

    文章

    565

    浏览量

    70858
  • CMD命令
    +关注

    关注

    0

    文章

    28

    浏览量

    8323
  • RT-Thread
    +关注

    关注

    31

    文章

    1294

    浏览量

    40231
收藏 人收藏

    评论

    相关推荐

    STM32中的独立看门狗和窗口看门狗是什么

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗
    的头像 发表于 02-20 17:47 2779次阅读
    STM32中的独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>是什么

    什么是看门狗电路

    看门狗电路 看门狗电路一般有软件看门狗和硬件看门狗两种。软件看门狗不需外接硬件电路,但系统需要出让一个定时器资源,这在许多系统中很
    发表于 10-21 01:40 8196次阅读

    stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么

    本文为您讲解STM看门狗时间计算(时限)与频率计算,独立看门狗和窗口看门狗的特性、区别与联系。
    发表于 10-10 10:41 8779次阅读

    什么是stm32看门狗?独立看门狗和窗口看门狗工作原理解析

    stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立看门狗
    的头像 发表于 11-06 11:48 2.8w次阅读
    什么是stm32<b class='flag-5'>看门狗</b>?独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>工作原理解析

    STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)

    stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定
    发表于 11-09 17:17 8460次阅读
    STM32<b class='flag-5'>看门狗</b>配置(独立<b class='flag-5'>看门狗</b>IWDG和窗口<b class='flag-5'>看门狗</b>WWDG)

    uC/OS-II 系统的多任务看门狗设计

    在嵌入式系统中为提高微型机系统的可靠性和安全性, 常用的方法就是使用看门狗看门狗分硬件看门狗和软件看门狗。硬件看门狗采用
    发表于 11-30 06:39 734次阅读

    基于STM32、FreeRTOS 实现硬件看门狗+软件看门狗监测多任务的方法

    基于STM32、FreeRTOS实现硬件看门狗+软件看门狗监测多任务的方法
    的头像 发表于 03-12 10:11 9444次阅读

    MCU独立看门狗与窗口看门狗的区别

    早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。为了满足更多使用场景,现在很多MCU都集成了两个看门狗:独立看门狗
    发表于 10-28 20:06 8次下载
    MCU独立<b class='flag-5'>看门狗</b>与窗口<b class='flag-5'>看门狗</b>的区别

    STM32:独立看门狗、窗口看门狗的配置

    STM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理却完全不同。
    发表于 02-08 16:15 18次下载
    STM32:独立<b class='flag-5'>看门狗</b>、窗口<b class='flag-5'>看门狗</b>的配置

    FreeRTOS使用看门狗的步骤

    看管后,看门狗会不断的观察任务,如果任务不在指定时间内喂狗。那么,定时器到0,然后慌了,ESP32 就自动重启。注意模拟器没有实现看门狗
    的头像 发表于 09-13 15:42 5096次阅读

    STM32中的独立看门狗和窗口看门狗

    一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立
    的头像 发表于 12-22 16:58 2176次阅读

    STM32中的独立看门狗和窗口看门狗

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗
    的头像 发表于 01-30 14:38 1400次阅读
    STM32中的独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>

    英飞凌开发板模块评测任务挑战

    ?RT-Thread 官方特联合合作伙伴发起开发板评测任务挑战活动,让开发者小伙伴们互相协作,对开发板
    的头像 发表于 04-11 09:05 912次阅读

    什么是看门狗,工业路由器看门狗技术的功能优势

    一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端。看门狗技术的核心硬件是看门狗模块,分为硬件看门狗和软件看门狗。▍
    的头像 发表于 03-27 10:16 1851次阅读
    什么是<b class='flag-5'>看门狗</b>,工业路由器<b class='flag-5'>看门狗</b>技术的功能优势

    MCU硬件看门狗+软件看门狗监测多任务的思路

    MCU硬件看门狗+软件看门狗监测多任务的思路
    的头像 发表于 10-24 15:25 1833次阅读
    MCU硬件<b class='flag-5'>看门狗</b>+软件<b class='flag-5'>看门狗</b>监测多<b class='flag-5'>任务</b>的思路