单片机常见的复位方式

单片机常见的复位方式一个是独立看门狗另外一个是窗口看门狗 当计数器达到给定的超时值时 触发一个中断 仅适用于窗口型看门狗 或产生系统复位

大家好,欢迎来到IT知识分享网。

        几种较为常见的单片机复位方式:外部复位(NRST引脚复位)、看门狗复位、软件复位、低功耗管理复位。

1、外部复位

        外部复位依赖硬件的设计,考虑应用设计复位电路。

1.1、上电复位

        低电平上电复位:电容两端的电压 不会突变,所以在上电的一刹那NRST引脚的是低电平,单片机复位重启,在很短的时间内,引脚电平由低变到高,单片正常工作。

单片机常见的复位方式

图1  低电平上电复位电路图

        高电平上电复位:引脚在上电前一直是低电平,在上电的一段时间内,引脚由低电平变为高电平实现复位。

单片机常见的复位方式

图2  高电平上电复位电路图

1.2、手动复位

        低电平手动复位:在单片机工作时,想要对其进行复位操作。下图不仅可以上电复位,在按键按下时NRET变成低电平,进行复位。

单片机常见的复位方式

图3  低电平手动复位图 

        低电平手动复位:按键按键引脚变成高电平,进行复位。

单片机常见的复位方式

 图4  高电平手动复位图 

2、看门狗复位

2.1、看门狗简介和复位原理

        一个是独立看门狗另外一个是窗口看门狗,当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

        独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效,LSI 的频率一般在 30~60KHZ 之间,根据温度和工作场合会有一定的漂移,我们一般取 40KHZ。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

        单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号)。

2.2、代码示例

2.2.1、iwdg.c代码

#include "iwdg.h" /*初始化独立看门狗 prer:分频数:0~7(只有低3位有效!) 分频因子=4*2^prer.但最大值只能是256! rlr:重装载寄存器值:低11位有效 时间计算(大概):Tout=((4*2^prer)*rlr)/40(ms). */ void IWDG_Init(u8 prer,u16 rlr) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对寄存器I写操作 IWDG_SetPrescaler(prer); //设置IWDG预分频值 IWDG_SetReload(rlr); //设置IWDG重装载值 IWDG_ReloadCounter(); //按照IWDG重装载寄存器的值重装载IWDG计数器 IWDG_Enable(); //使能IWDG } //喂独立看门狗 void IWDG_Feed(void) { IWDG_ReloadCounter(); } 

2.2.2、主函数调用代码

#include "iwdg.h" int main(void) { IWDG_Init(4,2000); //初始化看门狗 while (1) { IWDG_Feed(); //喂看门狗 /* 程序代码 */ } }

        一旦程序跑飞,一段时间内没有“喂狗”,程序复位。

3、软件复位

        调用STM32官方标准库的函数。

 /* 需要时调用下面函数即可复位 */ __set_FAULTMASK(1); // 关闭所有中端 NVIC_SystemReset(); // 复位 

        触发某个操作,执行某个程序时,调用该函数即可复位,在官方库中跳转可以看到该函数。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127911.html

(0)
上一篇 2025-09-04 14:45
下一篇 2025-09-04 15:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信