STM32窗口看门狗详解

发布者:sigma28最新更新时间:2024-02-27 来源: elecfans关键字:STM32  窗口看门狗  程序死机 手机看文章 扫描二维码
随时随地手机看文章

本文将介绍窗口看门狗,并通过按键模拟触发程序死机、进而触发提前唤醒中断、并复位程序。


①窗口看门狗介绍

②STM32CUBEMX配置工程文件

③代码实现

①窗口看门狗介绍

窗口看门狗用来监测由于不可预知的因素或者不可预知的逻辑条件导致程序脱离正常运行序列的软件故障。

窗口看门狗介绍之工作原理框图:

wKgaomRGRoOAFrakAAGAJ4Mz4JQ800.jpg

窗口看门狗介绍之配置寄存器

预分频器用于将RCC传来的PCLK1时钟进行分频,配置寄存器中第7位第8位用来存放预分频器的预分频值,第0位至第6位用于存放窗口看门狗的窗口值,当计数器的值大于窗口值时喂狗会触发复位、即只有计数器的值在0x40与窗口值之间时喂狗不会触发程序复位;所以窗口值需要大于0x40、小于0x7f,否则窗口没有意义。

窗口看门狗介绍之控制寄存器:

寄存器第0至第6位用于存放计数器的计数值,计数值最大0x7f、当计数值降低到0x40时会触发提前唤醒中断,在提前唤醒中断里可以保存重要的数据或者报警,当寄存器第6位由1变0时会对程序进行复位。

②STM32CUBEMX配置工程文件

Step1:使能USART3用于调试

wKgZomRGRoOAACQ_AANh2KlcKko800.jpg

Step2:使能RCC时钟、配置时钟树

wKgaomRGRoSAJ6y_AANypdax-RE591.jpg

wKgZomRGRoWAHZiuAALX6y0n8t8407.jpg

Step3:配置按键PA0为外部输入中断、设置中断优先级

wKgZomRGRoWAS9SvAAOE2sjSFz8710.jpg

wKgaomRGRoaAAEmCAAOXEbKMjZE533.jpg

Step4:使能窗口看门狗、配置分频数、计数值、窗口值,设置中断等级

wKgZomRGRoaACeYbAAKoNU16ZDM766.jpg

计数值减小5花费1us,窗口值为95、计数值为127

wKgaomRGRoeAD-ndAAOacZbfqtI337.jpg

Step5:配置GPIO控制led,用于提前唤醒中断里报警亮灯

wKgZomRGRoiADLTuAAMuP_Ja2pc448.jpg

Step6:生成工程

wKgaomRGRoiAHkmpAAKpwjBx_ic551.jpg

wKgZomRGRomAGNdqAAKcFgMJFeI041.jpg

wKgaomRGRomALy8kAAKaVblnRy0985.jpg

③代码实现

Step1:输出重定向,记得添加头文件

wKgZomRGRoqALk3uAAPKayBOR40703.jpg

While后少了一个分号哈!!!

Step2:在窗口值以下喂狗

wKgaomRGRouAbwejAATYAw_9B5o985.jpg

Step3:重定义提前唤醒函数

wKgZomRGRouAS67iAASEwxSmTk4247.jpg

Step4:重定义外部中断函数

wKgaomRGRoyAWtnUAAR0PKb4c78352.jpg

step5:编译、日志

wKgZomRGRoyAPVdhAABbRwPlmFk158.jpg


关键字:STM32  窗口看门狗  程序死机 引用地址:STM32窗口看门狗详解

上一篇:基于STM32物联网开发板(4)--LCD屏
下一篇:STM32 SysTick定时器讲解

推荐阅读最新更新时间:2024-11-08 18:03

STM32-点亮LED灯(GPIO配置)
点亮LED灯应该是每一人学习硬件的第一个实验了吧!从51到32在到ARM,废话少说,下面开始使用STM32点亮LED灯。 GPIO:又叫通用输入输出口,是微控制器必不可少的外设单元,用来和外界进行信号传递,数据交互的接口。 STM32的GPIO根据型号的不同分为A-H组,每一组都称为GPIOx组,每组都有独立的寄存器,因为相对于寄存器,函数版的使用还是比较容易入门的,尤其是有些编程基础的人来讲,但是寄存器是不可以忽视的,学会了基础的函数操作还是要回头去看看具体寄存器是如何运行的,这点很重要,高手和菜鸟的区别吧! STM32的GPIO还具有十分强大复用功能,这点以后会介绍和使用到。现在就把它的GPIO当成一个可输出高低电平的引脚就可
[单片机]
STM32的USB例程修改步骤
以下是笔者将ST的Custom_HID例程修改为 自定义USB设备 例程时总结出来的,因为笔者也是刚刚学USB开发不久,某些方面理解错误在所难免,请各位大虾指正。 一、usb_desc.c文件 根据你程序使用的通信方式修改。usb_desc.h文件中定义要根据usb_desc.c文件中的数组的大小;ConfigDescriptor 下添加需要处理的端点;根据需要添加或删除报告描述符(主要用于HID)和CDC接口描述符(主要用于实现USB转串口)等。具体方法可以下载个 电脑圈圈 使用D12编写的例子。 二、Usb_conf.h文件: 1、修改需要处理那些中断 CNTR_CTRM 处理数据正确
[单片机]
适合STM32的有哪些嵌入式操作系统
基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。 1、μClinux μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。 μC
[单片机]
STM32嵌入式开发中的RTOS应用分析
1 FreeRTOS 由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。 相对于C/OS-II、 embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为6.0版。 作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。 FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让
[单片机]
<font color='red'>STM32</font>嵌入式开发中的RTOS应用分析
STM32外部中断学习笔记
中断 分类 STM32的EXTI控制器支持19 个外部中断/ 事件请求。每个中断设有状态位,每个中断/ 事件都有独立的触发和屏蔽设置。 STM32的19个外部中断对应着19路中断线,分别是EXTI_Line0-EXTI_Line18: 线0~15:对应外部 IO口的输入中断。 线16:连接到 PVD 输出。 线17:连接到 RTC 闹钟事件。 线18:连接到 USB 唤醒事件。 触发方式:STM32 的外部中断是通过边沿来触发的,不支持电平触发。 外部中断分组:STM32 的每一个GPIO都能配置成一个外部中断触发源,STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0
[单片机]
<font color='red'>STM32</font>外部中断学习笔记
STM32中电源各引脚说明
一、数字电路中,电源符号VCC:C=circuit,表示电路的意思,即接入电路的电压;VDD:D=Device,表示器件的意思,即器件的工作电压;VSS:S=Series,表示公共连接的意思,通常指电路公共接地端电压。总结来说,VCC接电路的电源(±),VSS接电路的地,VDD接器件的电源引脚(±)。 二、STM32中电源各引脚说明VDDA:A=Analog,表示模拟的意思,所以就是表示模拟器件的工作电压;VSSA:表示模拟器件的公共端地。VBAT:给后备区域供电,维持包括RTC/BKP寄存器等在内的一些数据的保存。100引脚的封装中:VREF-:A/D的参考,当需要使用时,必须绑定到VSSA(使得所有模拟器件的参考都相对于V
[单片机]
STM32 Cubemax(一)——PWM配置及控制SG90舵机
前言 这是一篇基于STM32F429的保姆级入门的用CubeMAX配置生成并编写的控制舵机SG90的教程 一、SG90舵机 常见的SG90舵机 SG90引出三条线,分别是控制线(橙色),VCC(红色),GND(黑色),用杜邦线依次连接在开发板上即可 SG90舵机要求工作在频率为50HZ——周期为20ms的PWM波,且对应信号的高低电平在0.5ms - 2.5ms之间,对应的舵机转动角度如下表所示(当然也可以按照这个线性的对应关系去达到转动自己想要的角度,如想要转动60°,则高电平脉宽为大概为1.2ms,具体能不能转到特定的角度还和舵机的精度有关) 二、CubeMax配置 1.选型(这里用实验的开发板为正点原子的F4
[单片机]
<font color='red'>STM32</font> Cubemax(一)——PWM配置及控制SG90舵机
STM32的三种延时方法的代码实现_纯软件延时, 系统定时器延时, 定时器延时
/* 外部调用: delay_init(72); //系统主频, 单位为MHZ, 仅对 SYSTICK_DELAY 有效 delay_ms(1000); */ #include stm32f10x.h //#define SOFT_DELAY //纯软件延时 //#define SYSTICK_DELAY //系统定时器延时 #define TIMER_DELAY //定时器延时 #ifdef TIMER_DELAY #define TIMER_DELAY TIM4 #define TIMER_DELAY_PERIOD 1000 #de
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved