当前位置:   article > 正文

RTT看门狗功能笔记_rt thread kconfig配置看门狗

rt thread kconfig配置看门狗

我用的芯片是stm32f407vet6 rtthread 源码V4.0.1 bsp hal_drvie的驱动drv_wdt,有bug,显然和V4.0.2里的drv_wdt 有区别,,
下面说一下我调试通的步骤:
1 修改bsp/board/Kconfig 按照语法 添加看门狗部分,使得rthread.h 里有BSP_USING_WDT 宏变量
在这里插入图片描述
这样menucofig 里的配置如果
在这里插入图片描述
2 然后修改用cubeMAX 添加使能独立看门狗保存
在这里插入图片描述

3 然后在你的应用程序中添加官网上的wdt样例代码

/*

  • 程序清单:这是一个独立看门狗设备使用例程
  • 例程导出了 wdt_sample 命令到控制终端
  • 命令调用格式:wdt_sample wdt
  • 命令解释:命令第二个参数是要使用的看门狗设备名称,为空则使用例程默认的看门狗设备。
  • 程序功能:程序通过设备名称查找看门狗设备,然后初始化设备并设置看门狗设备溢出时间。
  •       然后设置空闲线程回调函数,在回调函数里会喂狗。
    
    • 1

*/

#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 ");
}

static int wdt_sample(int argc, char argv[])
{
rt_err_t ret = RT_EOK;
rt_uint32_t timeout = 1; /
溢出时间,单位:秒 */
char device_name[RT_NAME_MAX]=WDT_DEVICE_NAME ;

/* 根据设备名称查找看门狗设备,获取设备句柄 */
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);

return ret;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

}

4 注意 使用V4.0.2里的drv_wdt.c 文件 而且我修改了一处内容
文件路径xx\bsp\libraries\HAL_Drivers

在这里插入图片描述

不修改的话 rt_wdt_init函数进不去 原因不明
这样编译下载程序运行就正常了 如果使用原来V4.0.1的drv_wdt 看门狗不会启动 而且会不断重启

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/713198
推荐阅读
相关标签
  

闽ICP备14008679号