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瀏覽量
136694 -
復位
+關注
關注
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
同步復位和異步復位到底孰優孰劣呢?
同步復位和異步復位到底孰優孰劣呢? 同步復位和異步復位是兩種不同的復位方式,它們各自有優勢和劣勢,下面將詳細介紹這兩種
復位電路的復位條件和復位過程
電源監測芯片復位電路:這是最常見的復位電路類型,使用專用的電源監測芯片來監測電源電壓,并在電壓低于或高于預設閾值時觸發復位信號。
評論