1. 程式人生 > >STM32開發筆記45:看門狗驅動程式的移植

STM32開發筆記45:看門狗驅動程式的移植

微控制器型號:STM32F070F6P6


本文介紹將看門狗驅動程式移植到自己工程中的方法,本專案使用的是獨立看門狗IWDG。

 

1、在STM32CubeMX中使能看門狗,如下圖所示。

2、檢視看門狗時鐘。

3、對看門狗進行設定,這裡主要的是設定IWDG down-counter reload value。IWDG counter clock prescaler為分頻係數,我現在專案設定的IWDG的時鐘是40KHz,所以分頻後為40000/64=625Hz,我先在專案需要使用5秒的看門狗,則625*5=3125,就是IWDG down-counter reload value的數值。

4、在自己的工程中引入stm32f0xx_hal_iwdg.c驅動程式。

5、對stm32f0xx_hal_conf.h檔案進行設定,使能功能巨集HAL_IWDG_MODULE_ENABLED  。

6、在工程中建立iwdg.cpp和iwdg.h檔案。

7、拷貝下列程式到iwdg.h中。

#ifndef IWDG_H_
#define IWDG_H_

#ifdef __cplusplus
extern "C"{

class CIwdg
{
public:
	IWDG_HandleTypeDef hIwdg;
public:
	CIwdg(void);
	void Refresh(void);
};

}
#endif
#endif

8、拷貝下列程式到iwdg.cpp中。

#include "include.h"

CIwdg::CIwdg(void)
{
  this->hIwdg.Instance = IWDG;
  this->hIwdg.Init.Prescaler = IWDG_PRESCALER_64;
  this->hIwdg.Init.Window = 4095;
  this->hIwdg.Init.Reload = 3125;
  if (HAL_IWDG_Init(&this->hIwdg) != HAL_OK)
  {
    Target.ErrorHandler(__FILE__, __LINE__);
  }
}

void CIwdg::Refresh(void)
{
  HAL_IWDG_Refresh(&this->hIwdg);
}

9、至此,移植完成,呼叫Refresh成員函式進行喂狗即可。

 

 

原創性文章,轉載請註明出處CSDN:http://blog.csdn.net/qingwufeiyang12346。