12、stm32单片机基于hal库独立看门狗

1、IWDG独立看门狗

2、IWDG溢出时间计算

3、IWDG配置步骤

 

 iwdg.c

#include "iwdg.h"

IWDG_HandleTypeDef iwdg_handle = {0};
void iwdg_init(uint8_t psc, uint16_t rlr)
{
    iwdg_handle.Instance = IWDG;
    iwdg_handle.Init.Prescaler = psc;
    iwdg_handle.Init.Reload = rlr;
    HAL_IWDG_Init(&iwdg_handle);
}

void iwdg_feed(void)
{
    HAL_IWDG_Refresh(&iwdg_handle);
}

iwdg.h

#ifndef __IWDG_H__
#define __IWDG_H__

#include "sys.h"

void iwdg_init(uint8_t psc, uint16_t rlr);
void iwdg_feed(void);

#endif

main.c

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "iwdg.h"

int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */
    led_init();                         /* 初始化LED灯 */
    uart1_init(115200);
    iwdg_init(IWDG_PRESCALER_32, 1250);
    printf("hello world!\r\n");
    printf("狗儿肚子饿了,再不喂它的话就咬人了!\r\n");
    
    if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET)
    {
        printf("独立看门狗复位!\r\n");
        __HAL_RCC_CLEAR_RESET_FLAGS();
    }
    else
        printf("外部复位!\r\n");

    while(1)
    { 
        delay_ms(1500);
        iwdg_feed();
        printf("狗儿已经喂饱了,不会咬人了!\r\n");
//        led1_on();
//        led2_off();
//        delay_ms(500);
//        led1_off();
//        led2_on();
//        delay_ms(500);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值