STM32F4 獨立看門狗IWDG【使用庫函數】


為了提搞系統的可靠性,STM32F4系列MCU有一個獨立看門狗(IWDG)和一個窗口看門狗(WWDG)。今天做的實驗是關於獨立看門狗的。

獨立看門狗使用的時鍾源是內部低速振盪器LSI。因為LSE可能沒接,HSE可能壞點,HSE耗着的時候HSI卻觀點了。。。諸多原因,LSI是最好的獨立看門狗時鍾。

【IWDG主要特性】

1、獨立的向下計數器  2、內部RC振盪器作為時鍾源  3、當計數器值減到0時,復位MCU

【IWDG配置步驟】

1、設置KR寄存器,為向PR和RLR寫入數據做准備。向KR寫入0x5555使能寫入PR和RLR

2、寫入預分頻值和重裝載值。預分頻是對LSI進行分頻,重裝載值是每次重新計數的開始值。

3、向KR寫入0xAAAA,使能計數。

4、向KR寫入0x5555,重新開始計數。否則計數到0就會reset。

【代碼實現】

本實驗依賴於前面的LED實驗。實驗第一步的現象是LED反復閃爍。第二步現象是LED亮一下后熄滅。

第一部分:

int main()
{
  NVIC_Config();
  LED_Init();
  LEDOn(LED1);
  delay_ms(500);
  LEDOff(LED1);
 
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//使能寫入PR和RLR
  IWDG_SetPrescaler(IWDG_Prescaler_128);  //寫入PR預分頻值
  IWDG_SetReload(100);  //寫入RLR
  IWDG_Enable();//KR寫入0xCCCC

  while(1)
  {
    IWDG_ReloadCounter();  //KR寫入0x5555 重新開始計數,不讓復位
  }
}

在這次實驗中我們看到LED亮一下就保持常暗。說明MCU沒有被復位。

第二部分,我們不重裝RLR計數器,看看呢個不能復位mcu

int main()
{
  NVIC_Config();
  LED_Init();
  LEDOn(LED1);
  delay_ms(500);
  LEDOff(LED1);
 
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//使能寫入PR和RLR
  IWDG_SetPrescaler(IWDG_Prescaler_32);  //寫入PR預分頻值
  IWDG_SetReload(100);  //寫入RLR
  IWDG_Enable();//KR寫入0xCCCC

  while(1)
  {
     //等待mcu被IWDG復位

  }
}

這次可以看到LED在閃爍了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM