独立看门狗(IWDG)

1. IWDG最适用于看门狗作为一个主程序之外,能够完全独立工作,并对时间精度要求较低的场合。

2. IWDG由LSI驱动,即使主时钟故障仍旧保持工作状态(F10x系列:LSI=40K,F4xx系列:LSI=32K)。

3. 寄存器

    IWDG_KR:关键字寄存器(共16位有效位)

    IWDG_PR:预分频器寄存器(共3位有效位)

    IWDG_RLR:重载寄存器(共12位有效位)

    IWDG_SR:状态寄存器(共2位有效位)

4. 功能说明

    a. IWDG_KR写入0xCCCC启动独立看门狗,计数器从复位值0xFFF递减。当为0x0000时产生复位信号。

    b. 任何时候IWDG_KR写入0xAAAA,IWDG_RLR值会被重载到计数器,避免复位。

    c. IWDG_PR和IWDG_RLR具有写访问保护。在修改这两个寄存器之前,需向IWDG_KR写入0x5555。

5. 相关函数

/* Enable或Disable IWDG_PR和IWDG_RLR的写权限(即向IWDG_KR写入0x5555) */
void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);

/* 设置预分频系数(4、8、16、32、64、128、256分频)*/
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);

/* 向IWDG_RLR写入重载值(≤0xFFF) */
void IWDG_SetReload(uint16_t Reload);

/* 喂狗(即向IWDG_KR写入0xAAAA) */
void IWDG_ReloadCounter(void);

/* 启动独立看门狗(即向IWDG_KR写入0xCCCC)*/
void IWDG_Enable(void);

/* Flag management function */
FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);

注:状态寄存器指示预分频值和递减计数器是否正在被更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值