IWDG实现

/**  
 * @brief IWDG写访问使能  
 *  
 * 允许对IWDG寄存器进行写操作。  
 *  
 * @param IWDG_WriteAccess IWDG写访问使能控制。通常为特定的值以允许写操作。  
 */  
void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);  
  
/**  
 * @brief IWDG设置预分频器  
 *  
 * 设置IWDG的预分频器值。预分频器用于降低LSI(低速内部时钟)的频率,从而延长看门狗的超时时间。  
 *  
 * @param IWDG_Prescaler IWDG预分频器值。  
 */  
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);  
  
/**  
 * @brief IWDG设置重装载值  
 *  
 * 设置IWDG的重装载值。当看门狗计数器达到这个值时,它会被重装载。  
 *  
 * @param Reload IWDG重装载值。  
 */  
void IWDG_SetReload(uint16_t Reload);  
  
/**  
 * @brief IWDG重新装载计数器  
 *  
 * 触发IWDG计数器的重装载。在达到重装载值之前调用此函数可以避免看门狗复位。  
 */  
void IWDG_ReloadCounter(void);  
  
/**  
 * @brief IWDG使能  
 *  
 * 启动IWDG。在使能后,看门狗计数器开始递减,并在达到0时触发复位。  
 */  
void IWDG_Enable(void);  
  
/**  
 * @brief IWDG获取标志状态  
 *  
 * 检查指定的IWDG标志的状态。  
 *  
 * @param IWDG_FLAG 要检查的IWDG标志。  
 * @return 标志状态(SET 或 RESET)。  
 */  
FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. IWDG初始化

超时时间:TIWDG = TLSI × PR预分频系数 × (RL + 1)
其中:TLSI = 1 / FLSI
TLSI = 1/40khz = 0.025ms
例:TIWDG = 1000,PR预分频系数 × (RL + 1)=1000/0.025=40000;PR预分频系数=16那么RL = 2499

/*IWDG初始化*/
	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);	//独立看门狗写使能
	IWDG_SetPrescaler(IWDG_Prescaler_16);			//设置预分频为16
	IWDG_SetReload(2499);							//设置重装值为2499,独立看门狗的超时时间为1000ms
	IWDG_ReloadCounter();							//重装计数器,喂狗
	IWDG_Enable();									//独立看门狗使能
	
// 定义IWDG预分频器为4,即看门狗时钟源频率被4分频  
#define IWDG_Prescaler_4            ((uint8_t)0x00)  
  
// 定义IWDG预分频器为8,即看门狗时钟源频率被8分频  
#define IWDG_Prescaler_8            ((uint8_t)0x01)  
  
// 定义IWDG预分频器为16,即看门狗时钟源频率被16分频  
#define IWDG_Prescaler_16           ((uint8_t)0x02)  
  
// 定义IWDG预分频器为32,即看门狗时钟源频率被32分频  
#define IWDG_Prescaler_32           ((uint8_t)0x03)  
  
// 定义IWDG预分频器为64,即看门狗时钟源频率被64分频  
#define IWDG_Prescaler_64           ((uint8_t)0x04)  
  
// 定义IWDG预分频器为128,即看门狗时钟源频率被128分频  
#define IWDG_Prescaler_128          ((uint8_t)0x05)  
  
// 定义IWDG预分频器为256,即看门狗时钟源频率被256分频  
// 注意:通常预分频器的最大值和可用值会在硬件文档或数据手册中指定  
// 这里假设了预分频器可以设置为256,但请确保在实际硬件上支持这个值  
#define IWDG_Prescaler_256          ((uint8_t)0x06)
  1. 喂狗
IWDG_ReloadCounter();						//重装计数器,喂狗
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值