独立看门狗实验

本文介绍了如何在STM32平台上使用IWDG(独立窗口 watchdog)初始化计时器,设置预分频器prer为4,使能定时器后实现1秒周期的延时。通过计算公式Tout=(4*2^prer)*rlr/40,实例演示了rlr的计算并给出了关键代码段。
摘要由CSDN通过智能技术生成

iwdg.h

#ifndef _IWDG_H
#define _IWDG_H
#include "stm32f10x.h"
void IWDG_INIT(uint8_t prer ,uint16_t rlr);
#endif

iwdg.c

#include "stm32f10x.h"
#include "iwdg.h"


void IWDG_INIT(uint8_t prer ,uint16_t rlr)
{
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable );
  IWDG_SetPrescaler(prer);
  IWDG_SetReload(rlr);
    IWDG_ReloadCounter();
    IWDG_Enable();

}
main.c

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "iwdg.h"
int main(void)
{
    LED_Init();
    delay_init();
    KEY_INIT();
    IWDG_INIT(4,625);
    GPIO_ResetBits(GPIOA, GPIO_Pin_8);
    delay_ms(200);
    GPIO_SetBits(GPIOA,  GPIO_Pin_8);
    delay_ms(200);
    while(1)
    {
        if(!GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5))
        {
            delay_ms(20);
            if(!GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5))
            {GPIO_ResetBits(GPIOA, GPIO_Pin_8);
            IWDG_ReloadCounter();
            }
      }
        
       else
         {
            GPIO_SetBits(GPIOA,  GPIO_Pin_8);
         }
    }    
}

     

    (二)计算公式

Tout=((4*2^prer)*rlr)/40

当Tout=1s时,prer=4,计算得rlr=625。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值