TMC32_QJB/WDT/wdt_main.c
2026-04-30 16:23:12 +08:00

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>&copy; 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);
}