STM32F030 WWDG使用结论

来源:互联网 发布:6603棋牌 数据库 编辑:程序博客网 时间:2024/05/17 22:48

使用STM32F030的WWDG,发现其在STOP下面跟STM8S的休眠模式的情况一样,不会对MCU进行复位.


贴上看门狗代码:


/******************************************************************************************************************************************************************************** FILE: wdog_drv.c* Description: *  * Copyright (c) 2015 by LAN. All Rights Reserved.* * History:* VersionName       DateDescription   0.1蓝曙光2015/01/28Initial 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以上,但必须小于计数值小于0x7FWWDG->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: ==================================================================*/voidWdog_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

0 0
原创粉丝点击