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

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

3天内不再提示

【EK-RA6E2开发指南】WDT实践

嵌入式大杂烩 来源:嵌入式大杂烩 作者:嵌入式大杂烩 2025-09-23 18:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1 RT-Thread 的WDT简介

WDT(Watch Dot timer)即看门狗定时器,其主要作用是当发生软件故障时可以产生复位信号,使程序复位,其本质是一个计数器。

当看门狗启动后,计数器开始自动计数,在计数器溢出前如果没有被复位,计数器溢出就会对 CPU 产生一个复位信号使系统重启(俗称 “被狗咬”)。系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零(俗称“喂狗“),不让复位信号产生。如果系统不出问题,程序能够按时“喂狗”。一旦程序跑飞,没有“喂狗”,系统“被咬” 复位。

WDT相关接口如下所示:

函数描述
rt_device_find()根据看门狗设备设备名称查找设备获取设备句柄
rt_device_init()初始化看门狗设备
rt_device_control()控制看门狗设备
rt_device_close()关闭看门狗设备

关于WDT更详细的内容,请参看官方手册:

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/watchdog/watchdog

2 WDT使用实例

WDT使用起来很简单。

1、根据设备名称 “wdt” 查找设备获取设备句柄。

2、初始化设备后设置看门狗溢出时间。

3、启动看门狗。

4、喂狗:设置空闲线程回调函数,在空闲线程回调函数中喂狗。

2.1 RA6E2 WDT配置

接下来配置WDT,只需要简单配置就可使用。

  • FSP配置WDT

打开RA Smart Configurator,添加WDT的stack。

1.png

[]()[]()[]()Figure 2‑1 添加WDT的stack步骤

接下来需要配置WDT的参数。

2.png

[]()[]()[]()Figure 2‑2 WDT参数设置

这里可以设置WDT的参数。

  • 使能WDT

3.png

2.2 代码实现

核心代码如下:

#include < rtthread.h >
#include < rtdevice.h >
#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 ");
    rt_thread_mdelay(300);
}

int wdt_sample(int argc, char *argv[])
{
    rt_err_t ret = RT_EOK;

    char device_name[RT_NAME_MAX];

    rt_strncpy(device_name, WDT_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_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);
    return ret;
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(wdt_sample, wdt sample);

2.3 测试

编译下载。

如果屏蔽喂狗操作,在终端输入“wdt_sample”即可进行测试。

4.png

执行wdt_sample,结果如下:(一秒后触发WDT复位)

5.png

如果定时喂狗,在终端输入“wdt_sample”即可进行测试。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 看门狗
    +关注

    关注

    10

    文章

    607

    浏览量

    72587
  • 定时器
    +关注

    关注

    23

    文章

    3361

    浏览量

    121763
  • RT-Thread
    +关注

    关注

    32

    文章

    1542

    浏览量

    44294
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    EK-RA6E2开发指南】ADC获取电压值

    RA6E22个ADC单元,每个ADC单元有12位、10位、8位读取数据的格式可以选择,在单元0上有13个ADC通道,而在单元1上有16个ADC通道。 ADC单元具有三种扫描方式分别为:单次描模式、连续扫描模式和分组扫描模式,
    的头像 发表于 09-23 18:15 1739次阅读
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>开发指南</b>】ADC获取电压值

    EK-RA6E2开发指南】DAC设置电压值

    RA6E2有片上DAC外设,总共有两路DAC输出通道,每路的分辨率可配置为12位, 这两个通道之间互不影响,每个通道都可以使用ELC功能可外部触发或者进行与ADC单元1的同步转换。
    的头像 发表于 09-23 18:16 1795次阅读
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>开发指南</b>】DAC设置电压值

    EK-RA6E2开发指南】RTC实践

    RA6E2的RTC(Real Time Clock)外设,实质是一个掉电后还继续运行的定时器。从定时器的角度来说,相对于GPT外设,要简单很多 ,只有计时和触发中断以及输入捕获的功能。RTC外设的特别之处并不在于它的定时功能,而在于它掉电还继续运行的特性。
    的头像 发表于 09-23 18:18 1891次阅读
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>开发指南</b>】RTC<b class='flag-5'>实践</b>

    EK-RA2E2-快速入门指南

    EK-RA2E2-快速入门指南
    发表于 01-30 18:47 0次下载
    <b class='flag-5'>EK-RA2E2</b>-快速入门<b class='flag-5'>指南</b>

    EK-RA2E1 – 快速入门指南

    EK-RA2E1 – 快速入门指南
    发表于 02-03 19:08 0次下载
    <b class='flag-5'>EK-RA2E</b>1 – 快速入门<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入门指南

    EK-RA6M2 – 快速入门指南
    发表于 03-13 19:36 0次下载
    <b class='flag-5'>EK-RA6M2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA6E2v1 – 用户手册

    EK-RA6E2 v1 – 用户手册
    发表于 05-12 19:18 0次下载
    <b class='flag-5'>EK-RA6E2</b>v1 – 用户手册

    EK-RA6E2– 快速入门指南

    EK-RA6E2 – 快速入门指南
    发表于 05-12 19:20 1次下载
    <b class='flag-5'>EK-RA6E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA4E2– 快速入门指南

    EK-RA4E2 – 快速入门指南
    发表于 05-12 19:23 0次下载
    <b class='flag-5'>EK-RA4E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA6E2v1 – 用户手册

    EK-RA6E2 v1 – 用户手册
    发表于 06-29 19:10 1次下载
    <b class='flag-5'>EK-RA6E2</b>v1 – 用户手册

    EK-RA6E2– 快速入门指南

    EK-RA6E2 – 快速入门指南
    发表于 06-29 19:11 0次下载
    <b class='flag-5'>EK-RA6E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA4E2– 快速入门指南

    EK-RA4E2 – 快速入门指南
    发表于 06-29 19:14 0次下载
    <b class='flag-5'>EK-RA4E2</b>– 快速入门<b class='flag-5'>指南</b>

    EK-RA2E2-快速入门指南

    EK-RA2E2-快速入门指南
    发表于 07-03 20:12 0次下载
    <b class='flag-5'>EK-RA2E2</b>-快速入门<b class='flag-5'>指南</b>

    EK-RA2E1 – 快速入门指南

    EK-RA2E1 – 快速入门指南
    发表于 07-04 19:40 0次下载
    <b class='flag-5'>EK-RA2E</b>1 – 快速入门<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入门指南

    EK-RA6M2 – 快速入门指南
    发表于 07-04 20:54 0次下载
    <b class='flag-5'>EK-RA6M2</b>– 快速入门<b class='flag-5'>指南</b>