新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM學習筆記--窗口看門狗WWDG

STM學習筆記--窗口看門狗WWDG

作者: 時間:2016-09-12 來源:網絡 收藏

  時鐘來源:APB1àPCLK1最大72MHz

本文引用地址:http://2s4d.com/article/201609/296865.htm

  1:窗口的特性:

  (1)可編程的自由運行遞減計數器

  (2)復位條件:a:當遞減計數器,計數值小于0X40時,產生復位。

  b:當遞減計數器在窗口外(計數器>WWDG_CFR)被重裝載,則產生復位

  (3)啟動,且允許中斷,遞減計數器等于0X40,產生早期喚醒中斷(EWI),在中斷中重轉載計數器,避免WWDG復位。

  工作原理:

  

 

  由框圖可以看出:

  APB1的時鐘經過(預分頻器)WDGTB,CNT為7位【T6àT0】遞減計數器計數,控制寄存器(WWDG_CR)裝載入CNT。

  當計數器T6位由1à0時,立即產生復位信號。注意WWDG_CR的值范圍為0XFF-0XC0之間。

  看門狗配置寄存器WWDG_CFR設置窗口的高度,當T6:0>W6:0時,寫入WWDG_CR則立即產生復位信號;當T6:0

  

 

  寄存器:

  WWDG_CR

  

 

  WWDG_SR:包含提前喚醒中斷,即減到0X40時

  

 

  WWDG_CFR:窗口配置寄存器,EWI只能由硬件復位后清除,當到0X40時,立即產生中斷。

  

 

  //來自正點原子@ALIENTEK程序

  //保存WWDG計數器的設置值,默認為最大.

  u8 WWDG_CNT=0x7f;

  //初始化窗口看門狗

  //tr :T[6:0],用于存儲計數器的值

  //wr :W[6:0],用于存儲窗口值

  //fprer:窗口看門狗的實際設置

  //低2位有效.Fwwdg=PCLK1/4096/2^fprer.

  void WWDG_Init(u8 tr,u8 wr,u8 fprer)

  {

  RCC->APB1ENR|=1<<11; //使能wwdg時鐘

  WWDG_CNT=tr&WWDG_CNT; //初始化WWDG_CNT.

  WWDG->CFR|=fprer<<7; //PCLK1/4096再除2^fprer

  WWDG->CFR|=1<<9; //使能提前喚醒中斷

  WWDG->CFR&=0XFF80;

  WWDG->CFR|=wr; //設定窗口值

  WWDG->CR|=WWDG_CNT|(1<<7); //開啟看門狗,設置7位計數器

  MY_NVIC_Init(2,3,WWDG_IRQChannel,2);//搶占2,子優(yōu)先級3,組2

  }

  //重設置WWDG計數器的值

  void WWDG_Set_Counter(u8 cnt)

  {

  WWDG->CR|=(cnt&0x7F);//重設置7位計數器

  }

  //窗口看門狗中斷服務程序

  void WWDG_IRQHandler(void)

  {

  u8 wr,tr;

  wr=WWDG->CFR&0X7F;

  tr=WWDG->CR&0X7F;

  if(tr

  WWDG->SR=0X00;//清除提前喚醒中斷標志位

  LED1=!LED1;

  }



關鍵詞: STM 看門狗

評論


相關推薦

技術專區(qū)

關閉