0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

串口看门狗编程实验详解

算法&编程学院 作者:工程师a 2018-05-20 10:25 次阅读

// 独立看门狗没有中断,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);

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 看门狗
    +关注

    关注

    10

    文章

    540

    浏览量

    70251
收藏 人收藏

    评论

    相关推荐

    详解看门狗定时器

    详解看门狗定时器
    发表于 01-24 17:27

    详解看门狗定时器

    详解看门狗定时器
    发表于 02-06 10:06

    看门狗程序的编程思路

    看门狗程序的编程思路1.设置好系统时钟源2.初始化看门狗,选择看门狗模式,1秒的间隔3.循环使用喂狗程序
    发表于 07-21 06:08

    独立看门狗实验教程

    独立看门 看门狗实验网上有很多实验教程,比较典型的有正点原子的实验教程,野火的
    发表于 07-30 07:18

    看门狗是什么 看门狗的功能

    STM32的独立看门狗概述看门狗是什么看门狗的功能独立看门狗所需的环境独立看门狗工作原理看门狗
    发表于 07-30 08:07

    stm32-看门狗(独立看门狗,窗口看门狗)精选资料分享

    基于野火教程的看门狗实验器材:stm32c8t6,LED灯,按键一个。实验一:独立看门狗1. 实验原理。2.
    发表于 08-02 08:07

    看门狗实验概述

    看门狗实验概述也就是保证程序能正常执行,如果程序执行异常,可以使系统复位。 STM32看门狗的分类: 这次主要学习独立看门狗的相关知识,独立看门狗
    发表于 08-02 07:50

    WWDG窗口看门狗实验步骤

    实验步骤:1、使能窗口看门狗时钟(※)2、设置窗口值, 分频数 和计数器 初始值(※)3、开启WWDG(※)4、喂狗(WWDG 的喂狗操作实际就是往 CR 寄存器重写计数器值)(可选:当窗口看门狗
    发表于 08-02 06:12

    独立看门狗实验

    独立看门狗实验
    发表于 08-02 06:25

    独立看门狗实验

    独立看门狗实验独立看门狗概述常用寄存器和库函数配置编写独立看门狗实验一. 概述在单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自
    发表于 08-02 08:01

    【嵌入式系统】独立看门狗原理+看门狗实验分析 精选资料推荐

    【嵌入式系统】独立看门狗原理+看门狗实验分析1、看门狗模块概述在由单片机构成的微机系统中,由于单片机工作常常会受到来自外界电磁场干扰导致程序跑飞,陷入死循环——即程序正常运行被打断,系
    发表于 08-03 06:27

    怎样去编写独立看门狗实验代码

    独立看门狗实验目的是什么?怎样去编写独立看门狗实验代码?如何对独立看门狗实验进行分析?
    发表于 08-05 06:01

    独立看门狗(IWDG)的定义与实验详解

    独立看门狗(IWDG)是什么?如何对独立看门狗(IWDG)的功能进行配置?如何对独立看门狗(IWDG)的时钟进行配置?
    发表于 08-27 07:54

    关于stm32独立看门狗与窗口看门狗实验记录

    什么是看门狗?独立看门狗实验原理是什么?如何去编写其实验代码?窗口看门狗实验原理是什么?如何
    发表于 09-06 06:25

    求大神分享看门狗应用编程实验代码

    求大神分享看门狗应用编程实验代码
    发表于 01-18 07:46