您的位置 首页 产品

STM学习笔记–窗口看门狗WWDG

时钟来源:APB1àPCLK1最大72MHz1:窗口看门狗的特性:(1)可编程的自由运行递减计数器(2)复位条件:a:当递减计数器,计数值小于0X40时,产生

  时钟来历:APB1àPCLK1最大72MHz

  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,子优先级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;

  }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/299289.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部