我觉得,应该还是你的程序问题。
我建议,你下载官方的标准库,或者cube库,里面有例程,参考例程来
狗的时钟开了吗?狗在的总线时钟开了吗?
基本就是这俩问题了
试试下面的程序,不行换块MCU。#include "iwdg.h" void IWDGInit(void) //默认计数时间一分钟 { //首先打开LSI时钟 CLK->ICKR |= (1<<3); while((CLK->ICKR&(1<<4)) == 0);//等待时钟稳定 IWDG->KR = 0x55;//写入解锁 IWDG->PR = 0x06;//分频64K /256 = 250 IWDG->RLR = 250;//计数值250 1复位 IWDG->KR = 0xaa;//锁定并刷新分频器 IWDG->KR = 0xcc;//启动独立看门狗 } void IWDGFeed(void) { IWDG->KR = 0xaa;//锁定并刷新分频器 }
试试下面的程序,不行换块MCU。
#include "iwdg.h" void IWDGInit(void) //默认计数时间一分钟 { //首先打开LSI时钟 CLK->ICKR |= (1<<3); while((CLK->ICKR&(1<<4)) == 0);//等待时钟稳定 IWDG->KR = 0x55;//写入解锁 IWDG->PR = 0x06;//分频64K /256 = 250 IWDG->RLR = 250;//计数值250 1复位 IWDG->KR = 0xaa;//锁定并刷新分频器 IWDG->KR = 0xcc;//启动独立看门狗 } void IWDGFeed(void) { IWDG->KR = 0xaa;//锁定并刷新分频器 }