Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
看门狗
【英飞凌开发板模块评测任务大挑战】-3-看门狗外事使用
发布于 2023-05-04 11:26:08 浏览:374
订阅该版
[tocm] # 3.看门狗的使用 代码托管地址:[RTT_CY8C624ALQALQI: RTT_CY8C624ALQALQI RT_thread联合英飞凌联合开发mcu双核开发板 (gitee.com)](https://gitee.com/chejia12/rtt_-cy8-c624-alqalqi) 这里依然使用mdk的看法环境,使用mdk编译程序,下载程序 ## 3.1使能看门狗的驱动 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230504/3005f58f8f3261d68f9386029bddc391.png) ## 3.2看门狗测试函数 ```c /* 程序在空闲钩子函数内部喂狗操作,如果不喂狗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测试结果 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230504/f31964d464c3f91b9f940b2937c5f77a.png) ## 3.4看门狗设备驱动框架的学习 1. 实现看门狗的初始化函数 2. 实现看门狗的控制函数,根据命令类型实现不同的功能 3. 注册看门狗设备到设备驱动框架 ```c #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__ */ ```
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
chejia12
这家伙很懒,什么也没写!
文章
6
回答
0
被采纳
0
关注TA
发私信
相关文章
1
调用官网的看门狗例程打印报错
2
4.0.1版本的看门狗是不是有bug?
3
RTthread 4. 0.2加入看守后不断复位
4
开启Iwdt看门狗,为什么还会“死机”(硬件干扰)
5
新手“RT-Thread Settings”创建看门狗的时候后编译不通过的问题
6
为什么看门狗设备有两个”iwg“和”wdt“?
7
在擦除内部FLASH时引起看门狗的重启
8
记录,分别使用内网和外网服务器,进行OTA,一个会成功,一个却失败。
9
多任务下看门狗的策略设计
10
gd32303用ENV加入看门狗会出现invalid param@..
推荐文章
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
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部