IWDG简介
STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。
说人话就是能解决程序跑飞的问题。
编写代码思路
-1- 使用这个功能必须解除写保护
-2- IWDG使用的是低速内部时钟 (LSI)
-3- 分频系数和定时时间
代码编写(可直接拷贝使用)
#include "stm32f10x.h"
#include "usart.h"
#include "delay.h"
void IWDG_CFG(void)
{
//判断是不是独立看门狗复位
if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
{
printf("IwDG RESET\r\n");
RCC_ClearFlag();
}
//打开低速内部时钟
RCC_LSICmd(ENABLE);
//等待时钟平稳
while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET);
//打开写保护
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
//设置分频
IWDG_SetPrescaler(IWDG_Prescaler_32);
//设置重装值
IWDG_SetReload(128);
//喂一次狗
IWDG_ReloadCounter();
//开启看门狗
IWDG_Enable();
}
int main(void)
{
delay_init();
uart_init(115200);
IWDG_CFG();
while(1)
{
delay_ms(110);
IWDG_ReloadCounter();
}
}
工程获取
三连加关注后点击头像获取