CM3 允许由软件触发复位序列,用于特殊的调试或维护目的。在CM3中,有两种方法可以执行自我复位。第一种方法,是通过置位 NVIC 中应用程序中断与复位控制寄存器(AIRCR)的VECTRESET 位(位偏移:0)。
这种复位的作用范围覆盖了整个CM3处理器中,除了调试逻辑之外的所有角落,但是它不会影响到 CM3 处理器外部的任何电路,所以单片机上的各片上外设和其它电路都不受影响。
C语言版函数:
void NVIC_CoreReset(void){__DSB(); //置位VECTRESET SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |SCB_AIRCR_VECTRESET_Msk); __DSB(); while(1);}
汇编版函数:
__asm void NVIC_CoreReset_a(void){ LDR R0, =0xE000ED0C LDR R1, =0x05FA0001 //置位VECTRESET STR R1, [R0]deadloop_Core B deadloop_Core}
内核主要注意:
SCB_AIRCR_VECTRESET_Msk
LDR R1, =0x05FA0001
它是和系统复位唯一的区别。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7604浏览量
136646 -
复位
+关注
关注
0文章
171浏览量
24211
原文标题:STM32复位来源,以及系统和内核复位区别
文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
复位电路的设计问题
前言 最近看advanced fpga 以及fpga设计实战演练中有讲到复位电路的设计,才知道复位电路有这么多的门道,而不是简单的外界信号输入系统复位。 流程: 1.同步复位: 优点:
【GD32 MCU 入门教程】GD32 MCU 常见外设介绍(3)NVIC 介绍
)。NVIC与内核相辅相成,共同完成对中断的响应。本章将介绍中断的优先级设置、如何定义中断函数名称、中断向量如何偏移。有关NVIC的更多知识,请见《ARM Core
STM32复位电路用复位芯片和阻容复位电路区别
STM32是一款广泛使用的微控制器,其复位电路设计对于系统的稳定性和可靠性至关重要。本文将详细介绍STM32复位电路中使用复位芯片和阻容复位电路的区别,以及各自的优缺点和应用场景。 引
FPGA同步复位和异步复位
FPGA(Field-Programmable Gate Array,现场可编程门阵列)中的复位操作是设计过程中不可或缺的一环,它负责将电路恢复到初始状态,以确保系统的正确启动和稳定运行。在FPGA设计中,复位方式主要分为同步复位
在IAR 7.3调试STM32 usb只要配置USB的中断NVIC_Init,在debug的时就停止不了内核,也复位不了的原因?
在IAR 7.3调试STM32 usb 只要配置USB的中断NVIC_Init,在debug的时就停止不了内核,也复位不了。用的是STLINKV1V2 也是一样
是不是在配置NVIC
发表于 05-16 06:51
STM32如何用HAL库进行内核复位?
STM32如何用HAL库进行内核复位
普通的系统复位函数如下:
/ **
简短的系统重置
详细信息发起系统重置请求以重置MCU。
* /
__STATIC_INLINE void
发表于 04-11 06:49
STM32 HAL_NVIC_SystemReset()死机的原因?
一直使用HAL_NVIC_SystemReset()进行系统复位,最近程序升级,在执行到HAL_NVIC_SystemReset()时系统死机,做复位键,断掉电源等动作都无效一直是死机
发表于 04-09 07:41
STM32F303调用NVIC_SystemReset函数软件复位失败的原因?怎么解决?
在对APP进行升级完成后希望自动软件复位重启,但调用NVIC_SystemReset函数后一直在for循环。这里的软件复位原理不确定是否是内部控制NRST管脚复位。若是,则可能因外部电
发表于 04-02 06:52
不会RTOS,是因为你没搞懂NVIC
一、到底什么是NVIC?NVIC(NestedVectoredInterruptController)中文翻译为:嵌套中断向量控制器。NVIC属于内核级别的外设单元,用来管理CPU的中
STM32U575RIT6Q开发过程调用NVIC_SystemReset()程序就跑飞死掉,是什么原因导致的?
如题所示,本意是在程序中调用NVIC_SystemReset()让程序复位从头开始运行,但一调用NVIC_SystemReset()程序就跑飞死掉,即使程序使能独立看门狗,也不能复位,
发表于 03-11 08:33
同步复位和异步复位到底孰优孰劣呢?
同步复位和异步复位到底孰优孰劣呢? 同步复位和异步复位是两种不同的复位方式,它们各自有优势和劣势,下面将详细介绍这两种
复位电路的复位条件和复位过程
电源监测芯片复位电路:这是最常见的复位电路类型,使用专用的电源监测芯片来监测电源电压,并在电压低于或高于预设阈值时触发复位信号。
评论