WWDG实现

/**  
 * @brief WWDG去初始化  
 *  
 * 将WWDG寄存器重置为其默认的重置值。  
 */  
void WWDG_DeInit(void);  
  
/**  
 * @brief WWDG设置预分频器  
 *  
 * 设置WWDG的预分频器值。预分频器用于降低LSI(低速内部时钟)的频率,从而调整WWDG计数器的递减速度。  
 *  
 * @param WWDG_Prescaler WWDG预分频器值。  
 */  
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);  
  
/**  
 * @brief WWDG设置窗口值  
 *  
 * 设置WWDG的窗口值。这个值用于定义窗口看门狗的窗口大小。  
 *  
 * @param WindowValue WWDG窗口值。  
 */  
void WWDG_SetWindowValue(uint8_t WindowValue);  
  
/**  
 * @brief WWDG使能中断  
 *  
 * 启用WWDG的中断功能。当WWDG计数器在窗口外重置时,会触发中断。  
 */  
void WWDG_EnableIT(void);  
  
/**  
 * @brief WWDG设置计数器值  
 *  
 * 直接设置WWDG的计数器值。注意:通常不建议直接设置计数器值,除非有特殊需求。  
 *  
 * @param Counter WWDG计数器值。  
 */  
void WWDG_SetCounter(uint8_t Counter);  
  
/**  
 * @brief WWDG使能并设置计数器值  
 *  
 * 启用WWDG并设置其计数器初始值。  
 *  
 * @param Counter WWDG计数器初始值。  
 */  
void WWDG_Enable(uint8_t Counter);  
  
/**  
 * @brief WWDG获取标志状态  
 *  
 * 检查WWDG的早期唤醒中断标志(EWIF)是否被设置。  
 *  
 * @return 标志状态(SET 或 RESET)。  
 */  
FlagStatus WWDG_GetFlagStatus(void);  
  
/**  
 * @brief WWDG清除标志  
 *  
 * 清除WWDG的早期唤醒中断标志(EWIF)。  
 */  
void WWDG_ClearFlag(void);

image.png

  1. 开启时钟
	/*开启时钟*/
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);	//开启WWDG的时钟
	
  1. WWDG初始化
/*WWDG初始化*/
	WWDG_SetPrescaler(WWDG_Prescaler_8);			//设置预分频为8
	WWDG_SetWindowValue(0x40 | 21);					//设置窗口值,窗口时间为30ms
	WWDG_Enable(0x40 | 54);							//使能并第一次喂狗,超时时间为50ms
	
// 定义WWDG预分频器为1,即看门狗时钟源频率不被分频  
#define WWDG_Prescaler_1    ((uint32_t)0x00000000)  
  
// 定义WWDG预分频器为2,即看门狗时钟源频率被2分频  
#define WWDG_Prescaler_2    ((uint32_t)0x00000080)  
  
// 定义WWDG预分频器为4,即看门狗时钟源频率被4分频  
#define WWDG_Prescaler_4    ((uint32_t)0x00000100)  
  
// 定义WWDG预分频器为8,即看门狗时钟源频率被8分频  
#define WWDG_Prescaler_8    ((uint32_t)0x00000180)
  1. 喂狗
WWDG_SetCounter(0x40 | 54);					//重装计数器,喂狗
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值