原创 BOR与IWDT_Reset

2024-5-22 12:39 344 4 4 分类: 物联网
BOR(Brown-out Reset)是一种低电压复位,当电源电压低于设定的阈值时,系统会自动复位。这种复位通常用于保护硬件设备,防止因电压过低导致的设备损坏。

IWDT_Reset(Independent Watchdog Timer Reset)是一种独立看门狗定时器复位,当系统运行过程中出现故障或死循环时,看门狗定时器会在一定时间后自动复位系统。这种复位通常用于检测和修复软件故障。
以下是一个简单的BOR和IWDT_Reset的代码示例:

```c
#include "stm32f4xx.h"

void BOR_Init(void)
{
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR时钟
    PWR_ClearFlag(PWR_FLAG_SB); //清除电源故障标志位
    PWR_BackupAccessCmd(ENABLE); //使能备份寄存器访问
    PWR_BackupRegReset(); //复位备份寄存器
    PWR_BackupAccessCmd(DISABLE); //禁止备份寄存器访问
}

void IWDG_Init(uint8_t prer, uint16_t rlr)
{
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对IWDG->PR和IWDG->RLR的写操作
    IWDG_SetPrescaler(prer); //设置预分频值
    IWDG_SetReload(rlr); //设置重装载值
    IWDG_ReloadCounter(); //重新加载计数值
    IWDG_Enable(); //使能IWDG
}

int main(void)
{
    BOR_Init(); //初始化BOR
    IWDG_Init(IWDG_Prescaler_64, 4095); //初始化IWDG,预分频值为64,重装载值为4095

    while (1)
    {
        //主循环
    }
}
```

作者: 丙丁先生, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3996156.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条