ZNKT-ST-M/BSP/Src/WatchDog.c

149 lines
5.0 KiB
C
Raw Normal View History

/******************************************************************
*<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (C)2019, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD>Ͼ<EFBFBD><EFBFBD>ֹ<EFBFBD>˾
*
*<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: WatchDog.c
*<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʶ:
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ժҪ:
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>:
*<EFBFBD><EFBFBD>ǰ<EFBFBD>:
*<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>:
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
*
*<EFBFBD>޸ļ<EFBFBD>¼1:
* <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>:
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>:
* <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
******************************************************************/
/******************************************************************
* ͷ<EFBFBD>ļ<EFBFBD> *
******************************************************************/
#include "WatchDog.h"
#include "Include.h"
#include "Delay.h"
#include "stm32f4xx_iwdg.h"
/******************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
******************************************************************/
/******************************************************************
* <EFBFBD><EFBFBD><EFBFBD> *
******************************************************************/
/******************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
******************************************************************/
/******************************************************************
* ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
******************************************************************/
/******************************************************************
* ȫ<EFBFBD>ֺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *
******************************************************************/
/******************************************************************
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void CloseHardWatchDogGpioInit(void)
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD>ر<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>:
*<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*---------------------------------------------------
* 2019 / 10 / 17 ZhangLing
******************************************************************/
void CloseHardWatchDogGpioInit(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHB1PeriphClockCmd(WDG_WDI_GPIO_CLK | WDG_EN_GPIO_CLK, ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStruct.GPIO_Pin = WDG_WDI_GPIO_PIN;
GPIO_Init(WDG_WDI_GPIO_PORT, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = WDG_EN_GPIO_PIN;
GPIO_Init(WDG_EN_GPIO_PORT, &GPIO_InitStruct);
GPIO_SetBits(WDG_EN_GPIO_PORT, WDG_EN_GPIO_PIN);
GPIO_ResetBits(WDG_WDI_GPIO_PORT, WDG_WDI_GPIO_PIN);
}
/******************************************************************
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void WatchDogGpioInit(void)
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>gpio<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>:
*<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*---------------------------------------------------
* 2019 / 10 / 17 ZhangLing
******************************************************************/
void WatchDogGpioInit(void)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //ȡ<><C8A1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
IWDG_SetPrescaler(IWDG_Prescaler_4); //<2F><><EFBFBD><EFBFBD> IWDG <20><>Ƶϵ<C6B5><CFB5>
IWDG_SetReload(1200); //<2F><><EFBFBD><EFBFBD> IWDG װ<><D7B0>ֵ
IWDG_ReloadCounter(); //reload
}
/******************************************************************
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void WatchDogEnable(void)
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ʹ<EFBFBD>ܿ<EFBFBD><EFBFBD>Ź<EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>:
*<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*---------------------------------------------------
* 2019 / 10 / 17 ZhangLing
******************************************************************/
void WatchDogEnable(void)
{
IWDG_Enable(); //ʹ<>ܿ<EFBFBD><DCBF>Ź<EFBFBD>
}
/******************************************************************
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void WatchDogDisable(void)
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ʧ<EFBFBD>ܿ<EFBFBD><EFBFBD>Ź<EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>:
*<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*---------------------------------------------------
* 2019 / 10 / 17 ZhangLing
******************************************************************/
void WatchDogDisable(void)
{
GPIO_SetBits(WDG_EN_GPIO_PORT, WDG_EN_GPIO_PIN);
}
/******************************************************************
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void FeedDog(void)
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ι<EFBFBD><EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: void
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>:
*<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*---------------------------------------------------
* 2019 / 10 / 17 ZhangLing
******************************************************************/
void FeedDog(void)
{
IWDG_ReloadCounter(); //reload
}