打印
[STM32]

立创商城STM32F系列——STM32f4独立看门狗实验代码

[复制链接]
656|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小乐Tzz|  楼主 | 2018-8-31 14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32f4————独立看门狗实验代码
/*******************************************************/
iwdg.c里面的代码如下:
#include "iwdg.h"
//初始化独立看门狗
//prer:分频数:0~7(只有低 3位有效!)     rlr:自动重装载值,0~0XFFF.
//分频因子=4*2^prer.但最大值只能是256!
//rlr:重装载寄存器值:低11位有效.
//时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms).
void IWDG_Init(u8 prer,u16 rlr)
{
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //取消寄存器写保护
  IWDG_SetPrescaler(prer); //设置 IWDG分频系数
  IWDG_SetReload(rlr);   //设置IWDG装载值
  IWDG_ReloadCounter(); //reload
  IWDG_Enable();       //使能看门狗
}
//喂独立看门狗
void IWDG_Feed(void)
{
  IWDG_ReloadCounter();//reload
}
该代码就 2个函数,void IWDG_Init(u8 prer,u16 rlr)是独立看门狗初始化函数,就是按照上面介绍的步骤来初始化独立看门狗的。该函数有2 个参数,分别用来设置预分频数与重装载寄存器的值的。通过这两个参数,就可以大概知道看门狗复位的时间周期为多少了。其计算方式上面有详细的介绍,这里不再多说了。
void IWDG_Feed(void)函数,该函数用来喂狗,因为STM32的喂狗只需要向关键字寄存器写入 0XAAAA 即可,也就是调用库函数 IWDG_ReloadCounter(),所以这个函数也是很简单的。  
iwdg.h 内容比较简单,主要是一些函数申明,这里我们忽略不讲解。
接下来我们看看主函数,主程序里面我们先初始化一下系统代码,然后启动按键输入和看门狗,在看门狗开启后马上点亮 LED0(DS0) ,并进入死循环等待按键的输入,一旦 KEY_UP有按键,则喂狗,否则等待IWDG 复位的到来。该部分代码如下:
int main(void)
{   
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  delay_init(168);  //初始化延时函数
  LED_Init();        //初始化 LED 端口
  KEY_Init();         //初始化按键
     delay_ms(100);    //延时 100ms   
  IWDG_Init(4,500); //与分频数为 64,重载值为500,溢出时间为1s   
  LED0=0;            //先点亮红灯
  while(1)
  {
    if(KEY_Scan(0)==WKUP_PRES)//如果WK_UP 按下,则喂狗
    {
      IWDG_Feed();//喂狗
    }
    delay_ms(10);
  };

}
上面的代码,鉴于篇幅考虑,我们没有把头文件给列出来(后续实例将会采用类同的方式处理) ,因为以后我们包含的头文件会越来越多,大家想看,可以直接打开光盘相关源码查看。至此,独立看门狗的实验代码,我们就全部编写完了,接着要做的就是下载验证了,看看我们的代码是否真的正确。
/*******************************************************/


【立创商城】STM32F103CBT6 托盘  https://item.szlcsc.com/8796.html

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

70

帖子

0

粉丝