【STM32CubeMX】F103&窗口看门狗

前言

  本文记录了我学习STM32CubeMX的过程,方便以后回忆。我们使用的开发板是基于STM32F103C6T6的。本章记录了窗口看门狗的使用配置。要学习的话,注意流程一说,省略的内容。

基础

  • 窗口看门狗(WWDG)属于APB1上外设。
  • 窗口看门狗(WWDG)的时钟源为PCLK1在经过窗口看门狗的分频器。

流程

窗口看门狗  实验目的:检测窗口看门狗超时后,复位有没有被触发。

  1. 以下省略LED引脚(PC13)的配置。工程文件输出keil工程配置省略。在引脚界面先开启外部高速时钟,在这里才能SYSCLK才能调到72MHz,这个就不讲了,其它文章讲过了。如图注意标志的地方。

    窗口看门狗(WWDG)的时钟源为PCLK1,后面计算看门狗超时时间用到。

    在这里插入图片描述

  2. 窗口看门狗的配置

    • 分频器的作用,对时钟源为PCLK1进行分频给窗口看门狗的计数值自减提供周期。
    • 窗口值的作用,窗口看门狗的喂狗时间只能是,窗口值>喂狗时间>0x3F,因为到达0x3F就复位重启了。超前喂狗可能会造成复位。
    • 计数值的作用,因为是七位计数器,所以说计数值最大为128-1。
    • 运作,计数值在窗口看门狗时钟下自减,达到0x3F就复位重启。

    以下为官方手册的介绍:

    在这里插入图片描述

    超时公式在里面都有了。虽然我暂时也没想明白除4096是为啥,但是除就完了。

    在这里插入图片描述

    根据上述配置,超时时间为58.25ms。配置完成后,直接生成Keil工程文件。

  3. keil中打开,生成的工程。

    喂狗超时时间为58.25ms,两个测试:

    测试1:不加喂狗程序。主程序,延时30ms后点灯,58.25ms后被复位。现象,小灯不断闪烁。

    测试2:加喂狗程序。主程序,延时30ms后点灯,并加喂狗程序。现象,小灯一直亮。

    上述两个测试我都以实验过,代码和现象是对的,下述是介绍代码。

    • 测试1:

      //关键代码,主函数中加上
      //现象,小灯不断闪烁。
      HAL_Delay(30);	//延时30ms
      HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);	//点灯
      

      在这里插入图片描述

    • 测试2:

      //关键代码,主函数中加上
      //现象,小灯一直亮
      //窗口看门狗的数据结构,在窗口看门狗初始化中复制过来也行
      WWDG_HandleTypeDef hwwdg;
      hwwdg.Instance = WWDG;
      hwwdg.Init.Prescaler = WWDG_PRESCALER_8;
      hwwdg.Init.Window = 100;
      hwwdg.Init.Counter = 128-1;
      hwwdg.Init.EWIMode = WWDG_EWI_DISABLE;
      //主函数循环中加上
      HAL_Delay(30);	//延时30ms
      HAL_WWDG_Refresh(&hwwdg);	//喂狗
      HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);	//点灯
      

      在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值