新聞中心

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

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

作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://butianyuan.cn/article/201609/296865.htm

  1:窗口的特性:

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

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

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

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

  工作原理:

  

 

  由框圖可以看出:

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

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

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

  

 

  寄存器:

  WWDG_CR

  

 

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

  

 

  WWDG_CFR:窗口配置寄存器,EWI只能由硬件復(fù)位后清除,當?shù)?X40時,立即產(chǎn)生中斷。

  

 

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

  //保存WWDG計數(shù)器的設(shè)置值,默認為最大.

  u8 WWDG_CNT=0x7f;

  //初始化窗口看門狗

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

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

  //fprer:窗口看門狗的實際設(shè)置

  //低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; //設(shè)定窗口值

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

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

  }

  //重設(shè)置WWDG計數(shù)器的值

  void WWDG_Set_Counter(u8 cnt)

  {

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

  }

  //窗口看門狗中斷服務(wù)程序

  void WWDG_IRQHandler(void)

  {

  u8 wr,tr;

  wr=WWDG->CFR&0X7F;

  tr=WWDG->CR&0X7F;

  if(tr

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

  LED1=!LED1;

  }



關(guān)鍵詞: STM 看門狗

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉