STM32
直播中

陈键

7年用户 1007经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

如何利用库文件来实现IWDG独立看门狗操作呢

如何利用库文件来实现IWDG独立看门狗操作呢?
怎样去配置IWDG独立看门的相关参数呢?

回帖(2)

张洁

2021-9-17 16:43:07
1
举报

郑聪

2021-9-17 16:43:09
  最近编写一个程序,因为需要考虑到可靠性,所以需要在程序了添加看门狗功能。查了下STM32的相关资料,于是利用下库文件来实现IWDG独立看门狗操作。首先需要调用库文件 #include “stm32f10x_iwdg.h”
  再配置下看门狗相关参数
  //独立看门狗IWDG设置
  void WatchDog_int(void)// 独立看门狗IWDG设置
  {
  /* Enable write access to IWDG_PR and IWDG_RLR registers */
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  /* IWDG counter clock: 32KHz(LSI) / 32 = 1KHz */
  IWDG_SetPrescaler(IWDG_Prescaler_32); //独立看门狗预分频为32
  /* Set counter reload value to 1000 */
  IWDG_SetReload(1000);//设置IWDG重装载值 范围为 0~0x0FFF;
  /* Reload IWDG counter */
  IWDG_ReloadCounter();//按照重装载的寄存器的值来重装载IWDG计数器
  /* Enable IWDG (the LSI oscillator will be enabled by hardware) */
  IWDG_Enable();//使能 独立看门狗
  }
  在主程序中实现喂狗的程序如下:
  ///主程序//
  int main(void)
  {
  RCC_Configuration(); //时钟配置
  NVIC_Configuration();//中断配置
  GPIO_Configuration();//GPIO配置
  WatchDog_int();// 独立看门狗IWDG设置
  /* 检查是否看门狗复位*/
  if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
  {
  printf(“WatchDog Resetrn”);
  speakertest();
  RCC_ClearFlag();//清除标志位
  }
  else
  {;}
  }
  while(1)
  {
  //正常运行的程序
  IWDG_ReloadCounter();//喂狗
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分