原创
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条评论)
登录后参与讨论