Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
cubemx
Env
keil_MDK
WATCHDOG设备驱动开发
发布于 2025-01-02 15:24:14 浏览:197
订阅该版
[tocm] # WatchDog设备驱动开发 WDT (WatchDog Timer,看门狗定时器),看门狗从本质上来说就是一个带定时器的硬件复位电路。它一般有一个输入和一个输出,其中输入的操作叫作喂狗,输出一般连接着另外一部分(一般是单片机)的复位端。看门狗的功能是在定时器的计时时间到达阈值后发出重启信号,如果系统是正常运行的,则可以定时更新定时器的计时时间,以避免看门狗发出重启信号。因此对看门狗的基本操作包含初始化、设置溢出阈值、隔段时间喂狗(更新看门狗定时器计时时间)。 ## 开启WatchDog设备驱动    配置完成之后,执行Scons命令  成功之后,工程内就会添加好了watchdog.c设备驱动代码。  ## WatchDog外设驱动添加 打开“\dist\project\board\CubeMX_Config”目录下CubeMx工程文件 使能看门狗,并生成代码   ## 修改Kconfig文件 打开 board 文件夹下的 Konfig 文件,拷贝 GPIO 的配置项,并重命名 GPIO为 WDT。  menuconfig配置使能WDT:    Scons编译之后在Drivers目录下多出drv_wdt.c文件  ## 添加看门狗测试实例 在applications文件夹下添加测试实例代码iwdg_sample.c ```c /* * 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
#include
#define IWDG_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 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); return ret; } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(iwdg_sample, iwdg sample); ``` ## 注意事项 1-注意要将CubeMx生成的系统时钟初始化函数,copy到board.c里面。否则工程中的时钟将初始化失败  
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Wade
这家伙很懒,什么也没写!
文章
3
回答
0
被采纳
0
关注TA
发私信
相关文章
1
用scons构建代码出现问题
2
求助用scons生成不了mdk工程
3
关于使用scons编译的问题
4
关于scons 编译CPP问题求教
5
scons编译出现警告信息
6
SCons生成MDK5工程出错
7
realtouch的scons问题
8
SCons的PreAction能用吗?
9
scons 编译时出错。
10
求教:关于scons构建rtt时的两个问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
10
个答案
3
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
8
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部