手把手教程13: F460 WDG(看门狗)
目录
1. 看门狗计数器
1.1 简介
1.2 功能说明
1.2.1 启动
2. 启用WDG
2.1 配置参数
2.2 配置中断
2.3 初始化、装载、中断处理
配套开发板请移步博主小店:
https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111debhMzSwz&ft=t&id=660179379335
1. 看门狗计数器
1.1 简介
看门狗计数器有两个,一种是计数时钟源为专用内部 RC( SWDTLRC:10KHz)的专用看门狗计数器( SWDT), 另一种是计数时钟源为 PCLK3 的通用看门狗计数器( WDT)。
专用看门狗和通用看门狗是 16 位递减计数器,用来监测由于外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行而产生的软件故障。
两个看门狗都支持窗口功能。在计数开始前可预设窗口区间,计数值位于窗口区间时,可刷新计数器,计数重新开始。基本特性如下表。
计数时钟 |
SWDT: SWDTLRC的1/16/32/64/128/256/2048分频 WDT: PCLK3的4/64/128/256/512/1024/2048/8192分频 |
最长溢出时间 | SWDT:3.72hour(max) WDT:10.7s (PCLK3=50MHz) |
计数模式 | 递减计数 |
窗口功能 | 可设定窗口区间, 定义刷新动作的允许区间 |
启动方式 |
1)硬件启动 2)软件启动(SWDT不支持软件启动) |
停止条件 |
1)复位中 2)下溢,刷新错误发生时 再开始:硬件启动模式下,复位或中断请求输出后自动开始 软件启动模式下,再次设定刷新寄存器 |
中断/复位条件 |
1)计数下溢 2)刷新错误 |
1.2 功能说明
1.2.1 启动
看门狗计数器的启动方式有两种: 硬件启动方式和软件启动方式。 (SWDT 只支持硬件
启动)
硬件启动方式是指启动时从主闪存区域读取看门狗计数器的设定信息( ICG0 寄存器),计数器自动开始计数;
软件启动方式是指设定控制寄存器后,写刷新寄存器完成刷新动作,计数器开始计数。
更详细的内容参考用户手册;
2. 启用WDG
2.1 配置参数
配置分频系数,计数周期,更新周期,中断
stc_wdt_init_t stcWdtInit; //WDT初始化结构体 初始化/* configure structure initialization */MEM_ZERO_STRUCT(stcWdtInit); //清零 WDT初始化结构体MEM_ZERO_STRUCT(stcIrqRegiConf); //清零 IRQ寄存器结构体/* WDT structure parameters configure */stcWdtInit.enClkDiv = WdtPclk3Div512; //WDT分频系数为512:PCLK3/512stcWdtInit.enCountCycle = WdtCountCycle16384; //WDT计数周期:16384个时钟周期stcWdtInit.enRefreshRange = WdtRefresh0To100Pct; //WDT更新周期:0~100%stcWdtInit.enSleepModeCountEn = Enable; //睡眠模式下也计数stcWdtInit.enRequestType = WdtTriggerInterruptRequest;//更新错误/计数下溢出 后 触发中断(也可以复位)WDT_Init(&stcWdtInit); //初始化WDT
2.2 配置中断
配置中断源,中断优先级,回调
stc_irq_regi_conf_t stcIrqRegiConf; //IRQ寄存器结构体 初始化/* Select Int source WDT */stcIrqRegiConf.enIntSrc = INT_WDT_REFUDF; //中断源为439/* Register WDT Int to Vect.No.006 */stcIrqRegiConf.enIRQn = Int031_IRQn; //中断选择寄存器--/* Callback function */stcIrqRegiConf.pfnCallback = &Wdt_IrqCallback;//回调--/* Registration IRQ */enIrqRegistration(&stcIrqRegiConf);//写入IRQ寄存器/* Clear pending */NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);//清除等待中的中断/* Set priority */NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);//优先级为15(最低)/* Enable NVIC */NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);//使能中断
2.3 初始化、装载、中断处理
2.1和2.2的配置封在一个函数里,作为初始化函数,启动时运行;
装载:
应用程序开始运行是进行装载;
void drv_iwdg_reload(void)
{
#if (USE_IWDG)WDT_RefreshCounter(); //更新计数器(软件启动时首次更新开始计数)
#endif
}
中断处理:
发生下溢出错误时,触发中断,执行预设任务,然后重启系统;
static void Wdt_IrqCallback(void)
{en_flag_status_t enFlagSta;/* WDT underflow interrupt */if (M4_WDT->SR_f.UDF==1) //发生计数下溢(WDT_SR.UDF为1){M4_WDT->SR_f.UDF = 0u; //将标志位置0执行预设任务;NVIC_SystemReset(); //系统复位}
}
手把手教程13: F460 WDG(看门狗)相关推荐
- S32K3 MCAL WDG看门狗配置详解 基于EBtresos
WDG 看门狗(Watchdog)是一种计算机硬件或软件的监控机制,用于监测系统的运行状态,及时发现并解决潜在问题,保证系统的稳定性和可靠性,具有自动重启.可靠性.独立性.灵活性和易于实现等特点,可以 ...
- 手把手教你开发stm32——看门狗(基于hal库)
目录: 1.独立看门狗介绍 1.1.独立看门狗简介 1.2.独立看门狗功能描述 1.3.独立看门狗工作框图 2.独立看门狗实验 2.1.cubemx配置 2.2.具体代码实现 3.独立看门狗的相关寄存 ...
- STM32F1_WDG看门狗(独立+窗口)
推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 前言 今天总 ...
- 5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)
本文根据一周CC2541笔记汇总得来-- 适合概览和知识快速索引-- 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...
- 【STM32】HAL库 STM32CubeMX教程五----看门狗(独立看门狗,窗口看门狗)
前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库 STM32CubeMX的独立看门狗,窗口看门狗的使 ...
- zigbee CC2530 系列教程 10 看门狗实验
所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.9看门狗实验 4.9.1 实验目的 1.学习CC2530看门狗的工作方式: 2.学习看门狗功能在系统中的运行机制: 4.9. ...
- 13、RH850 F1 选项字节和看门狗
前言: 选项字OPTION配置是RH850的一项重点,用户手册对选项字的配置介绍很少,这篇文章将主要针对选项字和看门狗的配置进行讲解. 一.选项字特性 闪存的选项字节是一个扩展区域,并保存用户为各种目 ...
- STM32F103mini教程学习总结与心得(四)---->看门狗
关注同名微信公众号"混沌无形",有趣好文! 一.独立看门狗概述 1.看门狗的作用 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞, ...
- 51单片机实战教程(22 看门狗)
在要求高可靠性的系统中,为防止系统在异常情况下或者受到异常干扰导致MCU/CPU程序跑飞,系统长时间异常工作, 通常的做法就是引入看门狗.如果MCU/CPU不在规定时间内按要求访问看门狗,看门狗就强迫 ...
最新文章
- python 使用sax 解析xml 文件
- AE 先进的视频画面 快速释放 慢动作
- ASP.NET 程序中常用的三十三种代码(2)
- Linux C:管道的实现原理,命名管道
- [vue] 如果现在让你从vue/react/angularjs三个中选择一个,你会选哪个?说说你的理由
- 微课|中学生可以这样学Python(例5.4):计算决赛现场选手得分
- mysql读写分离实现_laravel 配置MySQL读写分离
- 关于selenium获取cookie然后实现免登录
- 关于满意度调查问卷数据处理1-基于处理工具SPSS和EXCEL
- 【Java多线程】停止线程
- python列表元素分割_在Python中分隔列表元素
- Android 9 (P)在user模式下无法使用fastboot烧录怎么破
- 小小的我,有大大的梦想
- PPT转HTML手机软件,《PPT转换成Html》PPT转Htm、Html软件和方法大全
- 古月居 ROS 入门21讲--PA16 参数的使用与编程方法
- luliyu-python-day02
- 六个人如何运维一万台服务器?
- WordPress Avada主题评测:非常受欢迎但值得吗? (2022)
- 自绘动画android,(译)android利用Canvas和几何学绘制几何动画
- 热评云厂商:荣联科技28.13亿元,集成商云的光荣与梦想
热门文章
- 高数笔记(十一):反常积分,柯西-施瓦茨不等式,闵可夫斯基不等式,定积分的应用
- 微积分——函数导数不存的几种典型情况
- php怎么设置浏览器提示错误,php如何让浏览器显示错误
- 部门表(部门编号。等等)
- 计算机基础知识 教学目的,计算机基础中的教学目的怎么写
- GameFramework框架详解之 Sound声音管理
- 建木(Jianmu)----使用docker-compose安装部署Jianmu(建木)
- Ubuntu上安装运行 rotated_maskrcnn
- 区块链笔记3-区块链典型技术
- 【JQ】-jPlayer视频、音乐播放器使用详解!