STM32 HAL库学习系列第11篇---定时器TIM---看门狗基本配置及使用

2019-11-16来源: eefocus关键字:STM32  HAL库  定时器TIM  看门狗

基本配置


使用cube配置溢出时间


记住准时喂狗


独立看门狗:


 /* IWDG 1s 超时溢出 */  

MX_IWDG_Init(IWDG_PRESCALER_64,625);  

/* 启动独立看门狗 */  

HAL_IWDG_Start(&hiwdg);   

LED1_ON;   

/* while部分是我们在项目中具体需要写的代码,这部分的程序可以用独立看门狗来监控   * 如果我们知道这部        

   分代码的执行时间,比如是50ms,那么我们可以设置独立看门狗的     * 溢出时间是60ms,比50ms多一点,

   如果要被监控的程序没有跑飞正常执行的话,那么     * 执行完毕之后就会执行喂狗的程序,如果程序跑飞

   了那程序就会超时,到达不了喂狗的程序     * 此时就会产生系统复位。但是也不排除程序跑飞了又跑回来

   了,刚好喂狗了,歪打正着。     * 所以要想更精确的监控程序,可以使用窗口看门狗,窗口看门狗规定必

   须在规定的窗口时间内喂狗。   */    

   

   while(1)                           

{   

/*  这里添加需要被监控的代码,如果有就去掉按键模拟喂狗,把按键扫描程序去掉 */

/*------------------------------------------------------------------------*/                

   if( KEY1_StateRead() == KEY_DOWN  )        

{            

   /*喂狗,如果不喂狗,系统则会复位,LD1则会灭一次,如果在1s              

   时间内准时喂狗的话,则LED1会常亮 */            

   HAL_IWDG_Refresh(&hiwdg);        

  }      

}

窗口看门狗


不同之处是:


1)独立看门狗没有中断,窗口看门狗有中断


2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制


3)独立看门狗只有下限,窗口看门狗又下限和上限


4)独立看门狗是12位递减的。窗口看门狗是7位递减的


5)独立看门狗是用的内部的大约40KHZ RC振荡器,窗口看门狗是用的系统时钟APB1ENR


 /* 初始化 WWDG */

  MX_WWDG_Init(0X7F, 0X5F, WWDG_PRESCALER_8);

  HAL_WWDG_Start(&hwwdg);//函数配置略微不同

 

  /* 窗口值我们在初始化的时候设置成0X5F,这个值不会改变 */

    wwdg_wr = WWDG->CFR & 0X7F;

 

    while(1)                       

    {   

     LED1_OFF;

    /*-----------------------------------------------------

         * 这部分应该写需要被WWDG监控的程序,这段程序运行的时间

         * 决定了窗口值应该设置成多大。

         * -----------------------------------------------------

        

         * 计时器值,初始化成最大0X7F,当开启WWDG时候,这个值会不断减小

         * 当计数器的值大于窗口值时喂狗的话,会复位,当计数器减少到0X40

         * 还没有喂狗的话就非常非常危险了,计数器再减一次到了0X3F时就复位

         * 所以要当计数器的值在窗口值和0X40之间的时候喂狗,其中0X40是固定的。

         */

    wwdg_tr = WWDG->CR & 0X7F;      

        if( wwdg_tr < wwdg_wr )

        {

            /* 喂狗,重新设置计数器的值为最大0X7F */

            HAL_WWDG_Refresh(&hwwdg,0X7F);

        }

    }


关键字:STM32  HAL库  定时器TIM  看门狗 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic480244.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32-自学笔记(18.独立看门狗,使用到的库函数)
下一篇:[HAL库学习之路]5.IWDG-独立看门狗

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

ST推出经济好用的STM8 Nucleo-32开发板
内核,集成大容量的片上存储器,包括高达128KB的闪存,并与STM32 MCU系列共享最新的外设接口,例如,定时器、模拟外设、CAN2.0B和数字接口。在设计开发对功耗、空间和成本有严格限制的智能传感器、执行器等产品时,STM8 MCU是人气之选。 STM8 Nucleo-32开发板的首款上市产品NUCLEO-8S207K8集成一个32引脚STM8S207K8 MCU,功能包括12个大电流输出端口和多个捕获比较通道。 
发表于 2019-12-05
ST推出经济好用的STM8 Nucleo-32开发板
STM8S开发环境搭建IAR For STM8
***********************************************************************************************************************************/   本文采用的是STM8S-Discovery开发板,开发板上半部分为ST Link调试器,芯片采用的是STM32F103C8,下半部分是STM8S105C6的开发板。    对于STM8的开发环境,主要采用两种,一种是IAR For STM8,另一种是官方的ST Toolset。ST Toolset中包含了两个工具STVD(ST Visual Develop)和STVP(ST
发表于 2019-12-05
STM8S开发环境搭建IAR For STM8
STM8S内部时钟切换问题解决
/************************************************************************************************************************************ Name    : STM8S内部时钟切换问题解决* Author  : MingMing* Release : 2013/12/28* Update  : 2013/12/29* E-mail  : clint.wang@foxmail.com
发表于 2019-12-05
STM8S内部时钟切换问题解决
STM8S存储器的读写操作
/************************************************************************************************************************************ Name    : STM8S存储器的读写操作* Author  : MingMing* Release : 2014/1/2* Update  : 2014/1/2* E-mail  : clint.wang@foxmail.com
发表于 2019-12-05
stm8l051 halt之后外部中断唤醒问题
最近用到stm8l051 halt,在halt之后开启了外部中断,有时灵,有时不灵,设置下降沿触发,但是按键(低有效)放开了才会从HALT退出,最后发现在进去外部中断的时候一直在外部中断里面不退出。在外部中断程序里面把端口的外部中断和端口使能的外部中断功能关闭,问题解决,可以在下降沿从halt退出。1、开启halt,其他代码省略,只贴halt部分:    /* 禁止TIM3 */    TIM3->SR1 = (uint8_t)(~(uint8_t)TIM3_IT_Update);    CLK_PeripheralClockConfig
发表于 2019-12-05
STM8L052低功耗模式
Stm8L系列单片机的低功耗有五种模式:§ wait模式§ Lowpower run模式§ Lowpower wait模式§ Active-haltwith full RTC模式§ Halt模式最低功耗的就是就是halt模式。这里也主要总结一下如何进入halt模式,进入以后可以通过什么方式唤醒,以及有很多客户会关心的如何自动唤醒。Halt模式进入很简单,执行一条halt指令,调用库函数也就是halt()就行了。但是进入前要注意把所有的中断挂起标志给清除掉。要是不清零又恰巧有中断标志的时候进入该模式也会被立马唤醒。进入这种模式,所有的外设全都关闭了,所有时钟关闭。这时候它自己是醒不过来的,只能靠掐人中(给个外部中断)或者重新复活
发表于 2019-12-05
小广播
何立民专栏 单片机及嵌入式宝典

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

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