Day6 STM32之IADG

1. IWDG简介

        Independent watchdog,即独立看门狗

        能产生系统复位信号的计数器

        递减计数器 减数到零会复位

        时钟由独立的RC振荡器,不来自主时钟,可在待机或停止模式下运行

        喂狗即在计数到0之前,重装载防止复位

*系统复位五种

        1)NRST引脚上的复位键,即开发板上的外部复位

        2)窗口看门口计数终止(WWDG复位)

        3)独立看门狗计数终止(IWDG复位)

        4)软件复位(SW复位)

        5)低功耗管理复位

独立看门狗

        用于检测外界电磁干扰,或硬件异常导致的程序跑飞的问题

        在一些需要高稳定的产品,对时间精度要求较低

        异常处理的最后手段,不可依赖,应在设计时避免异常

2. IWDG寄存器配置操作步骤(可通过HAL库完成)

        在键寄存器(IWDG_KR)中写入0xCCCC来使能IWDG

        在键寄存器(IWDG_KR)中写入0x5555来使能寄存器访问

        将预分频器寄存器(IWDG_PR)编程为0~7中的数值来配置预分配器

        对重载寄存器(IWDG_RLR)进行写操作

        等待寄存器更新(IWDG_SR = 0x0000 0000)

        刷新计数器值为IWDG_RLR的值(IWDG_KR = 0xAAAA)

3. IWDG配置步骤

        1)取消PR/RLR寄存器写保护,设置IWDG预分频系数和重装载值,启动IWDG       

        HAL_IWDG_Init()

        2)及时喂狗,即写入0xAAAA到IWDG_KR       

        HAL_IWDG_Refresh()

4. HAL库函数

4.1 HAL_IWDG_Init()

        函数定义        HAL_StatusTypeDef HAL_IWDG_Init (IWDG_HandleTypeDef * hiwdg)

        函数描述        根据IWDG_InitTypeDef中指定的参数初始化IWDG

        参数               hiwdg:指向有初始化数据的喂狗句柄

        返回值           HAL status

IWDG_HandleTypeDef hiwdg;
hiwdg.Instance = IWDG;
hiwdg.Init.Prescaler = IWDG_PRESCALER_256; // 设置预分频器
hiwdg.Init.Reload = 4095; // 设置重装载值
4.2 HAL_IWDG_Refresh()

        函数定义        HAL_StatusTypeDef HAL_IWDG_Refresh (IWDG_HandleTypeDef * hiwdg)

        函数描述        喂狗

        参数               hiwdg:指向有初始化数据的喂狗句柄

        返回值           HAL status

while (1) {
    // 定期喂独立看门狗
    HAL_IWDG_Refresh(&hiwdg);
    // 执行其他任务
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值