STM32開發筆記45:看門狗驅動程式的移植
阿新 • • 發佈:2018-11-25
微控制器型號: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。