STM 32 F 030 WWWG使用結論
STM 32 F 030のWWDM Gを使用して、STOPの下でSTM 8 Sのスリープモードの場合と同様に、MCUをリセットしないことがわかった.
番犬のコードを貼り付けます.
番犬のコードを貼り付けます.
/***************************************************************************************
****************************************************************************************
* FILE : wdog_drv.c
* Description :
*
* Copyright (c) 2015 by LAN. All Rights Reserved.
*
* History:
* Version Name Date Description
0.1 2015/01/28 Initial Version
****************************************************************************************
****************************************************************************************/
#include "wdog_drv.h"
#define WWDG_Prescaler_8 ((uint32_t)0x00000180)
#define CFR_WDGTB_MASK ((uint32_t)0xFFFFFE7F)
#define RCC_APB1ENR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */
/*==================================================================
* Function : Wdog_Init
* Description :
* Input Para :
* Output Para :
* Return Value:
==================================================================*/
void Wdog_Init(void)
{
Wdog_Start();
WWDG->CFR |= 0x7F; // , 0x3F , 0x7F
WWDG->CR = 0x7F; //
Wdog_Feed(0);
}
/*==================================================================
* Function : Wdog_Start
* Description :
* Input Para :
* Output Para :
* Return Value:
==================================================================*/
void Wdog_Start(void)
{
RCC->APB1ENR |= RCC_APB1ENR_WWDGEN;
//
WWDG->CFR = (WWDG->CFR & CFR_WDGTB_MASK) | WWDG_Prescaler_8;
WWDG->CR |= 0x80; //
}
/*==================================================================
* Function : Wdog_SetReload
* Description :
* Input Para :
* Output Para :
* Return Value:
==================================================================*/
void Wdog_SetReload(u8 uTime)
{
}
/*==================================================================
* Function : Wdog_Feed
* Description :
* Input Para :
* Output Para :
* Return Value:
==================================================================*/
void Wdog_Feed(u8 uTime)
{
if ((WWDG->CR & 0x7F) < WWDG->CFR)//
{
WWDG->CR |= 0x7F; //
}
}
/*==================================================================
* Function : Wdog_ResetChip
* Description :
* Input Para :
* Output Para :
* Return Value:
==================================================================*/
void Wdog_ResetChip(void)
{
while ((WWDG->CR & 0x7F) >= WWDG->CFR)
{//
}
WWDG->CR &= 0x40; //
while(1);
}
来た:http://blog.csdn.net/lan120576664