STM32笔记D6.2

本文详细介绍了如何在嵌入式系统中使用独立看门狗(IWDG)进行定时和复位控制,包括取消写保护、设置预分频和重装载值、启用看门狗以及喂狗操作。通过实例演示了初始化和喂狗函数,帮助读者理解并实现在设备休眠期间的自我检测机制。
摘要由CSDN通过智能技术生成

独立看门狗实验

      独立看门狗:就是一个12位的递减计数器(最大值为0xFFF),当计数器的值从某个值一直减到0的时候,系统就会产生一个复位信号,即IWDG_RESET。如果在计数没减到0之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作称为喂狗。看门狗功能由VDD电压域供电,在停止模式和待机模式下仍能工作。

键值寄存器IWDG_KR:0~15位有效;

预分寄存器IWDG_PR:0~2位有效;(有写保护功能,要操作先取消写保护)

重装载寄存器IWDG_RLR:0~11位有效;(有写保护功能,要操作先取消写保护)

状态寄存器IWDG_SR:0~1位有效;

1.IWDG独立看门狗操作库函数:

void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);//取消写保护
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);//设置预分组;写PR
void IWDG_SetReload(uint16_t Reload);//设置重装载值;写RLR
void IWDG_ReloadCounter(void);//喂狗
void IWDG_Enable(void);//使能看门狗
FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);//状态:重装载/预分频更新

2.独立看门狗操作步骤

  1. 取消寄存器写保护:WDG_WriteAccessCmd();
  2. 设置独立看门狗的预分频,确定时钟: IWDG_SetPerscaler();
  3. 设置看门狗重装载值,确定溢出时间: IWDG_SetReload();
  4. 使能看门狗: IWDG_Enable();
  5. 应用程序喂狗: IWDG_ReloadCounter();

溢出时间计算:Tout=((4*2^prer)*rlr)/40

实例:

void IWDG_Init(u8 prer,u16 rlr) 
{	
 	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能对寄存器IWDG_PR和IWDG_RLR的写操作
	IWDG_SetPrescaler(prer);  //设置IWDG预分频值:设置IWDG预分频值为64
	IWDG_SetReload(rlr);  //设置IWDG重装载值
	IWDG_ReloadCounter();  //按照IWDG重装载寄存器的值重装载IWDG计数器
	IWDG_Enable();  //使能IWDG
}

//喂独立看门狗
void IWDG_Feed(void)
{   
 	IWDG_ReloadCounter();//reload										   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值