单片机
返回首页

STM32学习笔记---IWDG独立看门狗实验

2016-02-25 来源:eefocus

继做了WWDG窗口看门狗实验后,继续进行第9个实验-IWDG独立看门狗实验,本实验通过设置窗口看门狗IWDG间断时间来定期的检查是否出错,在SysTick_Handler中断函数中加入了流水灯用来测试是否运行了IDWG看门狗程序,用PD6-LED2通过闪烁验证程序可行性,编程工程大致和USART实验过程差不多,先是开启系统时钟,然后GPIO端口时钟,然后复用功能时钟AFIO,然后各个模块用的的时钟,,呵呵,之后进入各个模块初始化,设置,编写子程序,中断的话,要在中断函数中填写某模块的中断触发处理函数,重要的是在CONFG.H函数中开启模块的声明,差不多是这样的了。

以下为IWDG函数主要部分:

//IWDG窗口看门狗设置初始化
void IWDG_Config(void)

  //独立看门狗初始化
   IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//启动寄存器读写

   IWDG_SetPrescaler(IWDG_Prescaler_32);//40K时钟32分频

   IWDG_SetReload(349);                 //计数器数值

   IWDG_ReloadCounter();             //重启计数器

   IWDG_Enable();                       //启动看门狗
}
***********************************************************

注意事项:

i. 有狗平常没事情可以不理,但是千万别忘了喂它,否则死都不知道怎么死的!

ii. 初始化程序的调用一定要在systic的初始化之后。

iii. 独立看门狗需要systic中断来喂,但是systic做别的用处不能只做这件事,所以我写了如下几句代码,可以不影响systic的其他应用,其他systic周期代码也可参考:

第一步:在stm32f10x_it.c中定义变量

int Tic_IWDG;           //喂狗循环程序的频率判断变量

第二步:将SysTickHandler中喂狗代码改为下面:

Tic_IWDG++;          //变量递增

if(Tic_IWDG>=100)    //每100个systic周期喂狗

  IWDG_ReloadCounter();//重启计数器(喂狗)

   Tic_IWDG=0;       //变量清零

}

完整代码为

void SysTick_Handler(void)
{
  Tic_Val++;           //精确延时变量递增

  Tic_IWDG++;          //独立看门狗变量递增

  if(Tic_IWDG>=100)    //每100个systic周期喂狗

  
    IWDG_ReloadCounter();//重启计数器(喂狗)
    Tic_IWDG=0;       //变量清零

 switch(IWDGFLAG)
 {
 case 0:
  GPIO_SetBits(GPIOD, GPIO_Pin_6);
     break;
 case 1:
  GPIO_ResetBits(GPIOD, GPIO_Pin_6);
     break;
 default:
     break;
 }
 IWDGFLAG=!IWDGFLAG;

  }
}
以下为IWDG函数结果部分:






 

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 短波AM发射器电路设计图

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章