STM8S(105K4)使用笔记——独立看门狗IWDG的基础配置

发布者:mmsg3814最新更新时间:2021-09-29 来源: eefocus关键字:STM8S  独立看门狗  IWDG  基础配置 手机看文章 扫描二维码
随时随地手机看文章

0、独立看门狗的使用

独立看门狗基于低速内部RC振荡器(LSI)运行。


若LSI运行正常,当主程序发生错误时,无法重置看门狗计数器,独立看门狗将会产生复位标志位并重启。


由于独立看门狗基于LSI运行,与主程序、大部分外设相独立,这能最大限度保证独立看门狗的功能正常运行。


1、使能独立看门狗

  /* 使能独立看门狗 (低速内部RC振荡器(LSI)将会被硬件使能) */

  IWDG->KR = (uint8_t)0xCC;


注意!一旦独立看门狗被使能将无法禁用!

如果你需要使用stm8s的低功耗模式,同时需要使用看门狗复位功能,请选择窗口看门狗!


2、配置分频因子与重装载值

解除PR、RLR寄存器写保护

  /* PR、RLR寄存器有写保护,通过向KR寄存器写入0x55解除写保护。 */

  IWDG->KR = (uint8_t)0x55;

  /* 通过写入0xAA恢复写保护。 */

  IWDG->KR = (uint8_t)0xAA;


设置IWDG分频

  /* 4分频 */

  IWDG->PR = (uint8_t)0x00;

  /* 8分频 */

  IWDG->PR = (uint8_t)0x01;

  /* 16分频 */

  IWDG->PR = (uint8_t)0x02;

  /* 32分频 */

  IWDG->PR = (uint8_t)0x03;

  /* 64分频 */

  IWDG->PR = (uint8_t)0x04;

  /* 128分频 */

  IWDG->PR = (uint8_t)0x05;

  /* 256分频 */

  IWDG->PR = (uint8_t)0x06;


设置IWDG自动重装载值

  /* IWDG_Period为需要设置的自动重装载值 */

  IWDG->RLR = (uint8_t)(IWDG_Period);


IWDG计时触发公式

IWDG_Period= (time * IWDG_Counter_Clock - 1);

IWDG_Period为设置的自动重装载值

time 为IWDG触发所需时间(s)

IWDG_Counter_Clock 为IWDG频率,等于LSI/IWDG分频值(hz)


3、初始化案例

  __IO uint32_t LsiFreq = 128000;

  /* Enable IWDG (the LSI oscillator will be enabled by hardware) */

  IWDG->KR = (uint8_t)0xCC;


  /* IWDG timeout equal to 250 ms (the timeout may varies due to LSI frequency

     dispersion) */

  /* Enable write access to IWDG_PR and IWDG_RLR registers */

  IWDG->KR = (uint8_t)0x55;


  /* IWDG counter clock: LSI(128KHZ)/128 = 1000 */

  IWDG->PR = (uint8_t)0x05;


  /* Set counter reload value to obtain 250ms IWDG Timeout.

    Counter Reload Value = 250ms/IWDG counter clock period

                         = 250ms / (LSI/128)

                         = 0.25s / (LsiFreq/128)

                         = LsiFreq/(128 * 4)

                         = LsiFreq/512

   */

  IWDG->RLR = ((uint8_t)(LsiFreq / 512));


  /* Reload IWDG counter */

  IWDG->KR = (uint8_t)0xAA;


主函数


  void main(void)

  {

    /**

    *  省略

    *

    */

    while (1)

    {

      /**

      *  省略

      *

      */

      

  /* Reload IWDG counter */

      IWDG_ReloadCounter();

    }

  }

关键字:STM8S  独立看门狗  IWDG  基础配置 引用地址:STM8S(105K4)使用笔记——独立看门狗IWDG的基础配置

上一篇:STM8S(105K4)使用笔记——通过TIM1输出PWM做呼吸灯
下一篇:STM8S(105K4)使用笔记——系统时钟的基础配置

推荐阅读最新更新时间:2024-11-04 19:36

stm8s定时器tim4使用方法解析
  stm8s定时器TIm4概述   该定时器由的8可位自动重载的向上计数器所组成,它可以用来作为时基发生器,具有溢出中断功能。   TIM6同时钟信号控制器用于定时器同步和级联。   STM8通用定时器TIM4的主要功能   TIM4功能包括:   1、8位向上计数的自动重载计数器;   2、3位可编程的预分配器(可在运行中修改),提供1,2,4,8,16,32,64和128这8种分频比例。   3、中断产生   –在计数器更新时:计数器溢出   STM8通用定时器TIM4功能概述      (TIM4框图 )   中断   通用定时器包括2个中断源:   更新中断(溢出,计数器初始化);   触发信号输入(
[单片机]
<font color='red'>stm8s</font>定时器tim4使用方法解析
STM8S使用外部时钟引起串口数据传输错误
最近有个小东西用到STM8S来驱动,之前用STM8S使用的是内部自带的16MHz RC时钟,尚未尝试过使用外部晶振作为主时钟。今天记录一下使用外部晶振时遇到的一个问题。 老规矩,在进行程序设计时,首先初始化时钟,本次使用的是STM8S103F3P6芯片,8MHz的外部晶振,为了方便内外部时钟切换,结合资料写了两个切换函数 /*********************************************** *描述:采用内部16MHz的RC时钟为主时钟 * 初始化时钟为1分频 16M,无外部晶振 *版本:V1.0 *作者: *********************************************
[单片机]
STM8S定时器基本中断定时
STM8S的定时器分三类; 高级定时器TIM1 通用定时器TIM2,TIM3,TIM5 基本定时器TIM4,TIM6 其中除TIM4和TIM6是8位定时器外,其他的定时器都是16位计数的。 每个定时器都具有自动重装载功能 每个定时器的时钟都可以由系统时钟独立分频而来,其中高级定时器TIM1可以选择65536种分频,分频系数为1-65536.通用定时器可以选择16种分频,基本定时器只能选择8种分频。 除了TIM1可以选择计数方向外,其他的定时器都是向下计数的,而技术手册上说的向上计数是错误的。 基本中断定时用到的寄存器; 一、自动装载寄存器高位(TIMx_ARRH) 和 自动装载寄存器低位(TIMx_
[单片机]
STM8S外部晶振使能
C语言: Codee#11718 /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 实验平台: STM8S103F2P6 FM 接收实验核心板 + 硬件 : STM8S103F2P6 + 开发平台: IAR For STM8 1.10 + 仿真器 : ST-Link + 日期 : 2010-6-22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ #include stm8s.h /****
[单片机]
<font color='red'>STM8S</font>外部晶振使能
STM8S学习05——EEPROM读写操作C语言程序
/* 这两天项目开发中,用到STM8的EEPROM功能,几个数据要掉电保存,在网上也查了一下EEPROM操作,发现网上出现的问题主要有两点: 1、EEPROM读写不成功; 2、EEPROM读写的时间太长; 看了一下ST的库函数,自己测试了一下,没有发现什么问题,比较正常;在读写EEPROM期间,也有动态扫描LED数码管,没有发现数码管有闪烁。 操作过程中: 1、开发平台:STM8S105K4T6 IAR6.3 ST库版本 V2.1.0 2、操作EEPROM,使用到的库函数: FLASH_Unlock(FLASH_MEMTYPE_DATA); while (FLASH_GetFlagStatus(FLASH_FLAG_DUL
[单片机]
STM8S——8位基本定时器(TIM4)
简介:该定时器由一个带可编程预分频器的8位自动重载的向上计数器所组成,它可以用来作为时基发生器,具有溢出中断功能。 主要功能: (1)8位向上计数的自动重载计数器; (2)3位可编程的预分配器(可在运行中修改),提供1、2、4、8、16、32、64、128这8种分频比例; (3)中断产生:更新中断(溢出,计数器初始化)。 代码实现: 1 /* Includes ------------------------------------------------------------------*/ 2 #include stm8s.h 3 4 /* Private define ------------
[单片机]
IAR编译STM8S 中的脚位操作对库函数的一点修改
IAR编译STM8S 自带的库函数都知道,IO口中有个每局定义如下: typedef enum { GPIO_PIN_0 = ((u8)0x01), /*! Pin 0 selected */ GPIO_PIN_1 = ((u8)0x02), /*! Pin 1 selected */ GPIO_PIN_2 = ((u8)0x04), /*! Pin 2 selected */ GPIO_PIN_3 = ((u8)0x08), /*! Pin 3 selected */ GPIO_PIN_4 = ((u8)0x10), /*! Pin 4 selected */ GPIO_PIN_5 = ((u8
[单片机]
STM32速成笔记(10)—IWDG
一、IWDG简介 独立看门狗 (Independent Watchdog, IWDG ),什么是看门狗?字面意思——看门的,有陌生人来,就会叫。实际在嵌入式领域里,看门狗也是这种作用,当软件程序发生故障或者程序跑飞时,看门狗会产生复位信号,复位系统。 二、STM32的IWDG 2.1 STM32的IWDG简介 STM32内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗
[单片机]
STM32速成笔记(10)—<font color='red'>IWDG</font>
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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