// 独立看门狗没有中断,WWDG有
// IWDG有时钟(LSI),wwdg需要挂载(PCK1:APB1)
// IWDG是12位递减的。WWDG是7位递减的
// IWDG只有下限,WWDG有下限和上限
// IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序
#include "stm32f4xx.h"
void delay(void);
void led_init(void);
void wwdg_init(u8 tr,u8 wval,u32 pre);
void WWDG_IRQHandler(void);
u8 WWDG_CNT=0X7F;
int main(){
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
led_init();
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
delay();
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_10);
wwdg_init(0x7f,0x5f,WWDG_Prescaler_8);
while(1){
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
}
}
void delay(void){
int i,j;
for(i=0;i<100000;i++)
for(j=0;j<1000;j++)
{}
}
void led_init(void){ // 保持DS1灯常亮,当熄灭时,表示MCU复位,说明没有喂狗。 DS0当喂狗时闪烁
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed=GPIO_Fast_Speed;
GPIO_Init( GPIOF, &GPIO_InitStruct);
GPIO_SetBits(GPIOF,GPIO_Pin_10|GPIO_Pin_9);
}
void wwdg_init(u8 tr,u8 wval,u32 pre){ // 分别为计算计数器初值、看门狗窗口值(上限:自己设定,下限0x40)、分频数
NVIC_InitTypeDef NVIC_InitStruct;
WWDG_CNT=tr&WWDG_CNT;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE); // wwdg挂载的时钟,iwdg有自己的时钟,不需要挂载
WWDG_SetWindowValue(wval);
WWDG_SetPrescaler(pre);
WWDG_Enable(WWDG_CNT);// 开启看门狗:设置了计数器初值,并且使能了看门狗
NVIC_InitStruct.NVIC_IRQChannel=WWDG_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0x02;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=0x02;
NVIC_Init(& NVIC_InitStruct);
WWDG_ClearFlag();
WWDG_EnableIT();// 开启提前唤醒中断
}
void WWDG_IRQHandler(void){
WWDG_SetCounter(WWDG_CNT);
WWDG_ClearFlag();
GPIO_ResetBits(GPIOF,GPIO_Pin_9); //中断处理函数,中间出现喂狗,DS0就会闪一下
delay();
delay();
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_9);
}
关键字:串口 看门狗
引用地址:
串口看门狗实验
推荐阅读最新更新时间:2024-03-16 16:03
stm32快速学习5——串口中断接收
串口自发自收 设定串口时钟 设定引脚功能 中断优先级 设定串口 Main文件 #include stm32f10x.h void RCC_Configuration(void); void GPIO_Configuration(void); void USART_Configuration(void); void NVIC_Configuration(void); int main(void) { RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); USART_Configuration();
[单片机]
通用异步串口扩展芯片GM8123/25的原理和应用
一.同类方案比较 目前比较通用的串口扩展方案有两种,一是用硬件实现,使用多串口单片机或专用串口扩展芯片,可供选择的串口扩展芯片有TI等公司开发的16C554系列串口扩展芯片,该系列芯片实现的功能是通过并行口扩展串行口,功能比较强大、通讯速度高,但控制复杂,同时价格较高,主要的应用场合是PC机串口扩展产品。在仅使用单片机控制且不需要太高波特率通讯的系统中,使用16C554系列芯片不仅成本高而且还造成了资源的浪费。而多串口单片机也同样存在价格高的缺点。另一种串口扩展方案就是用软件实现,软件模拟串口存在的缺点有:一是采样次数低,一般只能做到2次/BIT,这样数据的正确性就难以保证;二是不能实现高波特率通讯,软件模拟串口一般不能实现高于48
[嵌入式]
8051 的串口通讯及应用
在微型计算机数字系统里,数据传输可分为并行传输与串行传输两种,并行式传输一次传输多个位(通常是8位)。因此,连接两个系统之间的传输线必须有多条,当然一次传输多个位,传输的速度比较快,但是传输用到的线数也多,线路费用相对会高,线路噪声,阻抗匹配等问题也多,所以并行式传输不适合长距离通讯。 串行式传输每次传输一个位,数据传输的速度表面上不怎么快,但连接两个系统之间,只要两条传输线即可,适合长距离的通信。实际上,目前串行端口传输速率已比并行端口输出传输速率快。 实际中考虑使用并行式传输还是串行式传输要根据数据量与环境而定。若要将8051系统的数据传至另一8051系统,则可以使用串行式数据传输。 最典型的串行式数据传输接口是R
[单片机]
STM32 HAL库学习系列第11篇---定时器TIM---看门狗基本配置及使用
基本配置 使用cube配置溢出时间 记住准时喂狗 独立看门狗: /* IWDG 1s 超时溢出 */ MX_IWDG_Init(IWDG_PRESCALER_64,625); /* 启动独立看门狗 */ HAL_IWDG_Start(&hiwdg); LED1_ON; /* while部分是我们在项目中具体需要写的代码,这部分的程序可以用独立看门狗来监控 * 如果我们知道这部 分代码的执行时间,比如是50ms,那么我们可以设置独立看门狗的 * 溢出时间是60ms,比50ms多一点, 如果要被监控的程序没有跑飞正常执行的话,那么 * 执行完毕之后就会执行喂狗的程序,如果程序跑飞
[单片机]
X25045单片机看门狗电路介绍
前言
工控系统在运行时,通常都会遇到各种各样的现场干扰,抗干扰能力是衡量工控系统性能的一个重要指标。看门狗(Watchdog)电路是自行监测系统运行的重要保证,几乎所有的工控系统都包含看门狗电路。在8096系列单片机和增强型8051系列单片机中,该系统已经做在芯片内部,用户只要用软件开放它就可以,使用很方便。但目前工控系统仍在使用廉价的普通型8051系列单片机,则看门狗电路必须由用户自己建立。
看门狗电路一般有软件看门狗和硬件看门狗两种。软件看门狗不需外接硬件电路,但系统需要出让一个定时器资源,这在许多系统中很难办到,而且若系统软件运行不正常,可能导致看门狗系统也瘫痪。硬件看门狗是真正意义上的“程序运行监视器”,如计数型的
[单片机]
STM32基础之串口通信
串口通讯协议简介: 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。 串行通信的分类 1、按照数据传送方向,分为: **单工:**
[单片机]
STM32待机模式唤醒测试以及独立看门狗测试
环境: 主机:WIN7 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 在上篇文章中http://blog.csdn.net/jdh99/article/details/7369844,进行了一些STM32待机模式的测试.其中关于如何在再次启动时判断是否是待机模式没有进行测试.另外上篇文章有个问题,闹钟中断在待机模式下是进入不了的. 本文进行了独立看门狗IWDG测试,以及待机模式更详细的测试. STM32中,复位分为3种: 1.系统复位:外部复位,WWDG,IWDG,SW复位,低功耗管理复位.除复位标志寄存器RCC_CSR不被复位,全部都被复位 2.电源复位:上电/掉电复位
[单片机]
用8位单片机实现串口-以太网转换器
单片机或微控制器(MCU)(也称为嵌入式系统)已经在各个领域得到了广泛的应用。目前绝大多数系统都是以MCU为核心,与一些监测、伺服、指示设备配合实现一定的功能。以太网是当今最受欢迎的局域网之一,现已成为社会重要的基础信息设施之一, 是信息流通的重要渠道,如果嵌入式系统能够连接到Internet上面,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方。 将嵌入式系统与Internet相连的主要困难在于:Internet上面的各种通信协议对于存储器、运算速度等的要求比较高,而嵌入式系统中除部分32位处理器以外,大量存在的是8位和16位MCU,支持TCP/IP等Internet协议将占用大量系统资源,从而影响本来的功能或
[单片机]