开云-MCU异常复位的问题及处理办法

MCU异常复位的问题和处置法子 时候:2024-12-13 21:36:32 手机看文章

扫描二维码随时随地手机看文章

弄单片机开辟的小火伴应当都碰到过MCU复位的环境,可能看似甚么都正常,但单片机就是轻易复位,到底甚么缘由呢?

每块处置器都有复位的功能,分歧处置器复位的类型可能有差别,引发复位的缘由也可能有多种。

STM32的复位功能很是壮大,可经由过程软件、硬件和一些事务触发系统复位,并且经由过程其复位状况标记可阐发复位缘由。该部门位在STM32的RCC(Reset and Clock Control)模块。

STM32 复位介绍

对STM32来讲,复位凡是分为三种类型:系统复位、电源复位和备份域复位。本文连系STM32F4描写系统和电源复位的内容。

1. 系统复位

除RCC的复位标记和备份域中的寄放器外,系统复位会将其它全数寄放器都复位为复位值。

发生系统复位事务:

NRST 引脚低电平 窗口看门狗计数竣事 自力看门狗计数竣事 软件复位 低功耗治理复位 2. 电源复位除备份域内的寄放器之外,电源复位会将其它全数寄放器设置为复位值。发生电源复位前提: 上电/失落电复位或欠压复位 在退出待机模式时 注:备份域具有特定的复位,其复位仅感化在备份域自己(本文暂不讲述备份域复位)。

3. 复位电路简图

由上图可以看出来,NRST引脚、看门狗等各类事务终究都能引发系统复位。

STM32内核和系统复位

上章节站在STM32整体层面讲述了发生复位的多种事务,本章节进一步描写STM32的内核和系统复位。

STM32由内核(如:Cortex-M4)和各类片表里设(如UART)资本构成,此中软件复位可指定是内核复位仍是系统复位。

(图片来历收集)

1. 内核复位

在Cortex-M内核文档中大要有如许的描写:经由过程设置 NVIC 中利用法式中止与复位节制寄放器(AIRCR)的VECTRESET 位,可只复位处置器内核而不复位其它片上举措措施。

也就是说,如许操作只复位Cortex-M内核,不会复位UART这些片表里设。

内核复位函数(参考内核代码点窜而来):

void NVIC_CoreReset(void){ __DSB(); SCB- AIRCR = ((0x5FA SCB_AIRCR_VECTKEY_Pos) | (SCB- AIRCR SCB_AIRCR_PRIGROUP_Msk) | SCB_AIRCR_VECTRESET_Msk);//置位VECTRESET __DSB(); while(1) { __NOP(); }}

2. 系统复位

软件复位中的系统复位操作的寄放器位(SYSRESETREQ)分歧,复位的对象为全部芯片(除后备区域)。

系统复位函数:

void NVIC_SysReset(void){ __DSB(); SCB- AIRCR = ((0x5FA SCB_AIRCR_VECTKEY_Pos) | (SCB- AIRCR SCB_AIRCR_PRIGROUP_Msk) | SCB_AIRCR_SYSRESETREQ_Msk); //置位 SYSRESETREQ __DSB(); while(1) { __NOP(); }}

STM32复位来历

为了便利软件工程师调试和查找(复位)问题,STM32设计有个状况寄放器保留了各类复位来历的状况。

以下图所示(具体请查阅参考手册):

STM32引发异常复位的缘由

上面讲述了引发复位的事务有多种,本章节将连系现实利用,描写常见引发复位的缘由和解决法子。

缘由一:NRST引脚电平被拉低引发复位

有些非凡情况,特殊是年夜型工场,外界或内部会使电源发生干扰旌旗灯号,使STM32的NRST引脚电平被拉低,从而致使系统复位。

阐发缘由:NRST引脚电平拉低20us就会引发系统复位,电源上一个纹波,或外部静电城市引发电源被拉低20us。

解决法子:电源滤波、利用隔离电源、添加屏障办法等。

缘由二:欠压引发复位

有些产物在设计之初没有综合计较负载(与STM32同电源),因负载过年夜,使其欠压,从而致使复位。

阐发缘由:STM32除上电和失落电复位以外,绝年夜部门STM32还一个欠压复位,当电源电压 (VDD) 降至所选 VBOR 阈值以下时,芯片将复位。

解决法子:选择负载更年夜的电源、经由过程软件设置装备摆设公道的欠压值VBOR。

缘由三:数字、摹拟电源地压差引发复位

有工程师将VSS 和 VSSA之间利用一个几欧,乃至几十欧的电阻毗连,有时辰(有年夜电流颠末地线)就会由于电源地的压差致使芯片(电源)复位。

阐发缘由:我们比力存眷 VDD 和 VDDA 的关系,但疏忽了 VSSA 和 VSS 压差需要小在 50mV这一点(具体可以看数据手册)。假如有年夜电流的环境,则会引发电源地存在压差。

解决法子:尽可能利用完全毗连地的体例处置,好比0欧电阻,或隔离电源。

缘由四:看门狗超时喂狗引发复位

有很多工程师设计低功耗产物时,利用了看门狗,可是他们常常健忘了芯片睡眠模式不克不及住手喂狗,从而致使看门狗复位。

阐发缘由:STM32进入眠眠以后,看门狗仍然继续在工作,假如不和时喂狗,芯片会发生看门狗复位。

解决法子:进入眠眠之前设置更长的喂狗时候,同时不按期叫醒芯片进行喂狗。

欲知详情,请下载word文档 下载文档

上一篇:开云-ADALM2000测量二极管动态特性 下一篇:开云-FPGA实现串口升级及MultiBoot(四)MultiBoot简介