打印
[应用相关]

看门狗驱动程序的移植(转载)

[复制链接]
472|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

本文介绍将看门狗驱动程序移植到自己工程中的方法,本项目使用的是独立看门狗IWDG。


1、在STM32CubeMX中使能看门狗,如下图所示。


使用特权

评论回复
沙发
木木guainv|  楼主 | 2019-6-18 13:55 | 只看该作者

2、查看看门狗时钟。


使用特权

评论回复
板凳
木木guainv|  楼主 | 2019-6-18 13:56 | 只看该作者
3、对看门狗进行设置,这里主要的是设置IWDG down-counter reload value。IWDG counter clock prescaler为分频系数,我现在项目设置的IWDG的时钟是40KHz,所以分频后为40000/64=625Hz,我先在项目需要使用5秒的看门狗,则625*5=3125,就是IWDG down-counter reload value的数值。



使用特权

评论回复
地板
木木guainv|  楼主 | 2019-6-18 13:56 | 只看该作者

4、在自己的工程中引入stm32f0xx_hal_iwdg.c驱动程序。


使用特权

评论回复
5
木木guainv|  楼主 | 2019-6-18 13:56 | 只看该作者
5、对stm32f0xx_hal_conf.h文件进行设置,使能功能宏HAL_IWDG_MODULE_ENABLED  。

使用特权

评论回复
6
木木guainv|  楼主 | 2019-6-18 13:57 | 只看该作者
6、在工程中建立iwdg.cpp和iwdg.h文件。

使用特权

评论回复
7
木木guainv|  楼主 | 2019-6-18 13:57 | 只看该作者
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
木木guainv|  楼主 | 2019-6-18 13:58 | 只看该作者
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
木木guainv|  楼主 | 2019-6-18 13:58 | 只看该作者
9、至此,移植完成,调用Refresh成员函数进行喂狗即可。

使用特权

评论回复
10
643757107| | 2019-6-18 22:51 | 只看该作者
原来这么操作的

使用特权

评论回复
11
643757107| | 2019-6-18 22:51 | 只看该作者
多谢分享。。。。

使用特权

评论回复
12
木木guainv|  楼主 | 2019-7-4 16:52 | 只看该作者
643757107 发表于 2019-6-18 22:51
多谢分享。。。。

非常感谢支持

使用特权

评论回复
13
heimaojingzhang| | 2019-7-9 11:02 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
14
wakayi| | 2019-7-9 11:04 | 只看该作者
非常感谢楼主分享

使用特权

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

本版积分规则

134

主题

3870

帖子

5

粉丝