查看: 3989|回复: 0

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

[复制链接]
发表于 2016-9-13 11:32:31 | 显示全部楼层 |阅读模式
关键词: STM , 看门狗
  时钟来源: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|=1CFR|=fprerCFR|=1CFR&=0XFF80;
  WWDG->CFR|=wr; //设定窗口值
  WWDG->CR|=WWDG_CNT|(1CR|=(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;
  }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表