STM32f4窗口看门狗实验代码

发布者:Qingliu2022最新更新时间:2018-09-29 来源: eefocus关键字:STM32f4  窗口看门狗  实验代码 手机看文章 扫描二维码
随时随地手机看文章

来我们看看wwdg.c文件内容:

u8 WWDG_CNT=0X7F;

//初始化窗口看门狗    

//tr :T[6:0],计数器值       wr   :W[6:0],窗口值  

//fprer:分频系数(WDGTB),仅最低2 位有效  

//Fwwdg=PCLK1/(4096*2^fprer).  一般PCLK1=42Mhz

void WWDG_Init(u8 tr,u8 wr,u32 fprer)

{

  NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);  

//使能窗口看门狗时钟

  WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT.  

  WWDG_SetPrescaler(fprer); //设置分频值

  WWDG_SetWindowValue(wr); //设置窗口值

  WWDG_SetCounter(WWDG_CNT);//设置计数值

  WWDG_Enable(WWDG_CNT);  //开启看门狗

  

  NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;  //窗口看门狗中断

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;    //抢占优先级为2

  NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;   //响应优先级为3

  NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;  //使能窗口看门狗

  NVIC_Init(&NVIC_InitStructure);

  

  WWDG_ClearFlag();//清除提前唤醒中断标志位

     WWDG_EnableIT();//开启提前唤醒中断

}

 

//窗口看门狗中断服务程序  

void WWDG_IRQHandler(void)

{

  WWDG_SetCounter (WWDG_CNT); //重设窗口看门狗值

  WWDG_ClearFlag();//清除提前唤醒中断标志位

  LED1=!LED1;

}

wwdg.c文件一共包含两个函数。第一个函数void WWDG_Init(u8 tr,u8 wr,u8 fprer)用来设置 WWDG的初始化值。包括看门狗计数器的值和看门狗比较值等。该函数就是按照我们上面5 个步骤的思路设计出来的代码。注意到这里有个全局变量WWDG_CNT,该变量用来保存最初设置WWDG_CR计数器的值。在后续的中断服务函数里面,就又通过WWDG_SetCounter函数把该数值放回到WWDG_CR上。

最后在中断服务函数里面,先重设窗口看门狗的计数器值,然后清除提前唤醒中断标志。最后对LED1(DS1)取反,来监测中断服务函数的执行状况。  

  wwdg.h 头文件内容比较简单,这里我们就不做过多讲解。

在完成了以上部分之后,我们就回到主函数,代码如下:

int main(void)

{  

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2

  delay_init(168);          //初始化延时函数

  LED_Init();      //初始化 LED 端口

  KEY_Init();         //初始化按键

  LED0=0;           //点亮 LED0

  delay_ms(300);

  WWDG_Init(0x7F,0X5F,WWDG_Prescaler_8);  

//计数器值为 7f,窗口寄存器为5f,分频数为8      

  while(1)

  {

    LED0=1;  //熄灭 LED 灯

  }

}

该函数通过 LED0(DS0)来指示是否正在初始化。而 LED1(DS1)用来指示是否发生了中断。我们先让 LED0亮 300ms,然后关闭以用于判断是否有复位发生了。在初始化 WWDG 之后,我们回到死循环,关闭LED1,并等待看门狗中断的触发/复位。

在编译完成之后,我们就可以下载这个程序到探索者 STM32F4 开发板上,看看结果是不是和我们设计的一样。


关键字:STM32f4  窗口看门狗  实验代码 引用地址:STM32f4窗口看门狗实验代码

上一篇:STM32操作访问内部Flash
下一篇:STM32f4独立看门狗实验代码

推荐阅读最新更新时间:2024-03-16 16:14

STM32F429 DMA串口数据发送
串口数据配置 void macUART4_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_AHB1PeriphClockCmd(macUART4_RX_GPIO_CLK|macUART4_TX_GPIO_CLK,ENABLE); RCC_APB1PeriphClockCmd(macUART4_CLK, ENABLE); GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Pu
[单片机]
STM32F407玩控制—复合模糊控制
个人觉得,控制理论可以说都是数学,并且是一种专门的数学,或者说是一种应用数学,模糊控制也不例外,它是建立在模糊集合论基础上的,模糊集合可以看成是普通集合的拓展,那什么是集合,对不起,没有定义,集合属于初始概念,是不定义的概念,对不定义概念的理解,可以借助于公理,公理可以看成是初始概念的定义,扯远了,回到集合,那怎么理解集合,集合大致可以看成是有相同属性事物的总和,什么是模糊集合,这么说吧,比如我们描述一个人,其属性可以有美丑、气质,也可以有高矮、胖瘦、年老等等,那颜值究竟有多高,那气质究竟有多好,在模糊集合中就用隶属度来表示,比如,定义一个胖子集合A,大胖子a1,属于A的隶属度为1.0,中胖子a2,属于A的隶属度为0.8,小胖子a
[单片机]
用<font color='red'>STM32F4</font>07玩控制—复合模糊控制
STM32F4 串口程序 调试记录 hardfault_handle 问题
项目型号: Proj01_uart // 从现在起开始使用项目型号,此程序调试通过 /***************************************************************************** ** 使用UART4通信 ** TXD = PA0 ** RXD = PA1 ****************************************************************************** ** 乔海权 ** 14-04-03 *********************************************************
[单片机]
STM32F407定时器TIM1中断
实验现象:LED灯0.5s闪烁 /**************************************************************************************** *函 数 名:bsp_Inittimer1 *函数功能:初始化定时器1 *形 参:无 *返 回 值:无 *****************************************************************************************/ void bsp_Inittimer1(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseIni
[单片机]
STM32F103和STM32F401的ADC多通道采集DMA输出
使用STM32F103和STM32F401CCU6对双轴摇杆(两个电压通道)进行ADC采样并通过DMA读取数值 STM32 ADC(模数转换)工作模式 单次转换模式 In Single Conversion mode, the ADC does one conversion. This mode is started either by setting the ADON bit in the ADC_CR2 register (for a regular channel only) or by an external trigger (for a regular or injected channel), while the
[单片机]
zubax_gnss移植到STM32F407
源码默认支持STM32F107芯片 STM32 HAL库测试:zubax_gnssbootloaderzubax_chibioschibiostesthalSTM32 STM32 ChibiOS/RT系统测试:zubax_gnssbootloaderzubax_chibioschibiosdemosSTM32 拷贝STM32F407默认配置文件 这三个文件是ChibiOS/RT系统主要的配置文件 源:zubax_gnssbootloaderzubax_chibioschibiosdemosSTM32RT-STM32F407-DISCOVERY 目的:zubax_gnssbootloadersrcos_config
[单片机]
zubax_gnss移植到<font color='red'>STM32F4</font>07
STM32F407-基于AD7606进行多路数据采集
1.原理图 2.管脚定义 2.1 OS2,OS1,OS0 查阅数据手册 这三个管脚组合控制过采样模式。 000 表示无过采样,最大 200Ksps 采样速率。 001 表示 2 倍过采样, 也就是硬件内部采集 2 个样本求平均。 010 表示 4 倍过采样, 也就是硬件内部采集 4 个样本求平均。 011 表示 8 倍过采样, 也就是硬件内部采集 8 个样本求平均。 100 表示 16 倍过采样, 也就是硬件内部采集 16 个样本求平均。 101 表示 32 倍过采样, 也就是硬件内部采集 32 个样本求平均。 110 表示 64 倍过采样, 也就是硬件内部采集 64 个样本求平均。 过采样倍率越高,ADC 转换时间越
[单片机]
<font color='red'>STM32F4</font>07-基于AD7606进行多路数据采集
测试STM32F4 EVNETOUT
看到很多管脚都可以配置成EVENTOUT,刚好有个管脚要想要输出一个高电平脉冲,测试了一下: 环境:STM32F407, IAR 7.4, STM32CubeF4 GPIO配置代码: GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF15_EVENTOUT; HAL_GPIO_Init(GPIOB
[单片机]
测试<font color='red'>STM32F4</font> EVNETOUT
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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