85 lines
2.2 KiB
C
85 lines
2.2 KiB
C
/**
|
|
******************************************************************************
|
|
* @file wdt_main.c
|
|
* @author TMC Scan Team
|
|
* @version V1.0.0
|
|
* @date 09/12/2019
|
|
* @brief
|
|
******************************************************************************
|
|
*
|
|
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
|
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
|
|
* TIME. AS A RESULT, TMC SHALL NOT BE HELD LIABLE FOR ANY
|
|
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
|
|
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
|
|
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
|
*
|
|
* <h2><center>© COPYRIGHT 2016 TMC</center></h2>
|
|
******************************************************************************
|
|
**/
|
|
#include "global.h"
|
|
|
|
WDT_InitTypeDef gWDTInit;
|
|
|
|
static void WDTAlarmModeInit(void)
|
|
{
|
|
/* Alarm reset system after the WDT count overflow */
|
|
gWDTInit.Mode = WDT_MODE_ALARM;
|
|
|
|
/* Set Initial value */
|
|
gWDTInit.Loadvalue = WDTTIMEOUT;
|
|
|
|
WDT_Init(WWDT, &gWDTInit);
|
|
|
|
WDT_Cmd(WWDT, ENABLE);
|
|
|
|
return;
|
|
}
|
|
|
|
static void WDTHardwareInit()
|
|
{
|
|
NVIC_EnableIRQ(WWDT_IRQn);
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_WDT, ENABLE);
|
|
RCC_WWDTClockConfig(RCC_WWDT_CLKSRC_HSI, 0, ENABLE);
|
|
RCC_WDTResetSystemCmd(RCC_ALARM_RSTEN_WWDT, ENABLE);/*如果开启 要考虑不喂狗会直接系统复位,每次复位会再次复位 debug功能会失效*/
|
|
}
|
|
|
|
/**
|
|
* @function AppWDTInit
|
|
* @brief 看门狗初始化
|
|
* @return 无
|
|
*/
|
|
void AppWDTInit(void)
|
|
{
|
|
/*看门狗硬件初始化*/
|
|
WDTHardwareInit();
|
|
|
|
/*看门狗模式初始化*/
|
|
WDTAlarmModeInit();
|
|
}
|
|
|
|
/**
|
|
* @function AppCloseWDT
|
|
* @brief 关看门狗
|
|
* @return 无
|
|
*/
|
|
void AppCloseWDT(void)
|
|
{
|
|
NVIC_DisableIRQ(WWDT_IRQn);
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_WDT, DISABLE);
|
|
RCC_WWDTClockConfig(RCC_WWDT_CLKSRC_HSI, 0, DISABLE);
|
|
RCC_WDTResetSystemCmd(RCC_ALARM_RSTEN_WWDT, DISABLE);/*如果开启 要考虑不喂狗会直接系统复位,每次复位会再次复位 debug功能会失效*/
|
|
}
|
|
|
|
/**
|
|
* @function AppCloseWDT
|
|
* @brief 看门狗喂狗
|
|
* @return 无
|
|
*/
|
|
void AppRefreshWDT(void)
|
|
{
|
|
/* 喂狗 */
|
|
WDT_FeedDog(WWDT, &gWDTInit);
|
|
}
|
|
|