RT_Thread_Learning_02_看门狗使用

                                                                                              RT_Thread_Learning_02_看门狗使用

在之前已经移植好的工程上操作:

1.打开CubeMX配置看门狗时钟

配置看门狗时钟,生成代码。

2.编辑Kconfig看门狗选项:

查询:STM32F407VET6_RTT\components\drivers\include\rtdevice.h文件查找需要开启的宏定义并在STM32F407VET6_RTT\bsp\stm32\STM32F407VET6_JT\board\kconfig中编辑对应配置:

3.在Menuconfig打开RTT看门狗功能

4.编译MDK5工程

6

5.打开生成的工程检查:

6.MDK5下出现看门狗文件:

7.编写应用层程序:

//app_wdt.c
#include <rtthread.h>
#include <rtdevice.h>
#include "app_wdt.h"

static rt_device_t wdg_dev;
rt_uint32_t i = 0;
rt_bool_t feedFull = RT_FALSE;
int idle_hook(void)
{
		if(i < 20)
		{
			rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
			rt_kprintf("feed %d dog!\n",i++);
			return 0;
		}
		return -1;
}

int wdg_fun(void)
{
	rt_err_t RT_Value = -1;
	rt_uint32_t timeout = 1;
	
	char device_name[RT_NAME_MAX]=WDT_DEVICE_NAME;
	
	wdg_dev = rt_device_find(device_name);
	if(RT_NULL == wdg_dev)
	{
		rt_kprintf("rt_device_find failed!\n");
		return RT_Value;
	}
	
	RT_Value = rt_device_init(wdg_dev);
	if(RT_EOK != RT_Value)
	{
		rt_kprintf("rt_device_init failed!\n");
		return RT_Value;	
	}
	
	RT_Value = rt_device_control(wdg_dev,RT_DEVICE_CTRL_WDT_SET_TIMEOUT,&timeout);
	if(RT_EOK != RT_Value)
	{
		rt_kprintf("rt_device_control failed!\n");
		return RT_Value;	
	}
		
    /* 启动看门狗 */
    RT_Value = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_START, RT_NULL);
    if (RT_Value != RT_EOK)
    {
        rt_kprintf("start %s failed!\n", device_name);
        return -RT_ERROR;
    }	
	return RT_Value;
}

MSH_CMD_EXPORT(wdg_fun, wdt sample);

//app_wdt.h
/****************************************************************************
	File name : app_wdt.h
	Author : JT
	Description : 看门狗头函数
	Version : 暂无说明
	Function List :
								1、添加打印功能

  History:   
			<author>		<time>		<version>			<desc>
				JT			2021/02/21		V0.1					WDT
******************************************************************************/

#ifndef __APP_WDT_H__
#define __APP_WDT_H__



#define WDT_DEVICE_NAME    "wdt"    /* 看门狗设备名称 */


int wdg_fun(void);
int idle_hook(void);


//main.c
/****************************************************************************
	File name : main.c
	Author : JT
	Description : 入口函数
	Version : 暂无说明
	Function List :
								1、添加打印功能

  History:   
			<author>		<time>		<version>			<desc>
				JT			2021/02/21		V0.1					WDT
******************************************************************************/
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include "app_wdt.h"



/****************************************************************************
	Function : main.c
	Description : 主函数
	Input : 无
	Output : 无
	Return : int
	Othre : 无
******************************************************************************/
int main(void)
{
	wdg_fun();
	
	while(1)
	{
		rt_thread_mdelay(500);
		idle_hook();
	}
}



































 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值