0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NVIC_SysReset系統(tǒng)復(fù)位

5RJg_mcuworld ? 來(lái)源:YXQ ? 2019-07-31 16:12 ? 次閱讀

系統(tǒng)復(fù)位是置位同一個(gè)寄存器中的 SYSRESETREQ 位。這種復(fù)位則會(huì)波及整個(gè)芯片上的電路:它會(huì)使 CM3 處理器把送往系統(tǒng)復(fù)位發(fā)生器的請(qǐng)求線置為有效。但是系統(tǒng)復(fù)位發(fā)生器不是CM3的一部分,而是由芯片廠商實(shí)現(xiàn),因此不同的芯片對(duì)此復(fù)位的響應(yīng)也不同。因此,讀者需要認(rèn)真參閱該芯片規(guī)格書,明白當(dāng)發(fā)生片內(nèi)復(fù)位時(shí),各外設(shè)和功能模塊都會(huì)回到什么樣的初始狀態(tài),或者有哪些功能模塊不受影響(比如, STM32系列的芯片有后備存儲(chǔ)區(qū),該區(qū)就被特殊對(duì)待)。

大多數(shù)情況下,復(fù)位發(fā)生器在響應(yīng) SYSRESETREQ 時(shí),它也會(huì)同時(shí)把 CM3 處理器的系統(tǒng)復(fù)位信號(hào)(SYSRESETn)置為有效。通常, SYSRESETREQ 不應(yīng)復(fù)位調(diào)試邏輯。

這里有一個(gè)要注意的問(wèn)題:從 SYSRESETREQ 被置為有效,到復(fù)位發(fā)生器執(zhí)行復(fù)位命令,往往會(huì)有一個(gè)延時(shí)。在此延時(shí)期間,處理器仍然可以響應(yīng)中斷請(qǐng)求。但我們的本意往往是要讓此次執(zhí)行到此為止,不要再做任何其它事情了。所以,最好在發(fā)出復(fù)位請(qǐng)求前,先把FAULTMASK置位。因此,我在提供源代碼中有這么一句:__set_FAULTMASK(1);,也就是置位FAULTMASK。

C語(yǔ)言版函數(shù):

voidNVIC_SysReset(void){  __DSB();  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |                 SCB_AIRCR_SYSRESETREQ_Msk);  __DSB();  while(1);}

匯編版函數(shù):

__asm void NVIC_SysReset_a(void){  LDR R0, =0xE000ED0C  LDR R1, =0x05FA0004  STR R1, [R0]deadloop_Sys  B deadloop_Sys}

內(nèi)核復(fù)位與系統(tǒng)源代碼和相近,差異在于SYSRESETREQ和SYSRESETREQ這兩位。

關(guān)于復(fù)位的知識(shí),在實(shí)際項(xiàng)目中應(yīng)用的比較多。

可以結(jié)合上面提供例程理解,以及結(jié)合Cortex-M手冊(cè)理解。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18927

    瀏覽量

    227231
  • 復(fù)位電路
    +關(guān)注

    關(guān)注

    13

    文章

    314

    瀏覽量

    44449

原文標(biāo)題:31個(gè)驚艷的數(shù)據(jù)可視化作品,讓你感受“數(shù)據(jù)之美”!

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    系統(tǒng)復(fù)位的特殊處理

    復(fù)位就是復(fù)位撤離,系統(tǒng)復(fù)位就是復(fù)位結(jié)束了系統(tǒng)準(zhǔn)備開(kāi)始工作。
    的頭像 發(fā)表于 11-28 12:20 ?761次閱讀
    <b class='flag-5'>系統(tǒng)</b>解<b class='flag-5'>復(fù)位</b>的特殊處理

    復(fù)位那些小事—系統(tǒng)復(fù)位的特殊處理

    復(fù)位就是復(fù)位撤離,系統(tǒng)復(fù)位就是復(fù)位結(jié)束了系統(tǒng)準(zhǔn)備開(kāi)始工作。
    的頭像 發(fā)表于 12-04 15:25 ?1228次閱讀
    <b class='flag-5'>復(fù)位</b>那些小事—<b class='flag-5'>系統(tǒng)</b>解<b class='flag-5'>復(fù)位</b>的特殊處理

    STM32F303調(diào)用NVIC_SystemReset函數(shù)軟件復(fù)位失敗的原因?怎么解決?

    在對(duì)APP進(jìn)行升級(jí)完成后希望自動(dòng)軟件復(fù)位重啟,但調(diào)用NVIC_SystemReset函數(shù)后一直在for循環(huán)。這里的軟件復(fù)位原理不確定是否是內(nèi)部控制NRST管腳復(fù)位。若是,則可能因外部電
    發(fā)表于 04-02 06:52

    STM32 HAL_NVIC_SystemReset()死機(jī)的原因?

    一直使用HAL_NVIC_SystemReset()進(jìn)行系統(tǒng)復(fù)位,最近程序升級(jí),在執(zhí)行到HAL_NVIC_SystemReset()時(shí)系統(tǒng)
    發(fā)表于 04-09 07:41

    Ch579 NVIC_SystemReset()函數(shù)不復(fù)位怎么解決?

    在使用CH579,做項(xiàng)目,即將完工,內(nèi)存升級(jí)了一下,即占用RAM比之前版本多了1K;導(dǎo)致升級(jí)后的程序,執(zhí)行NVIC_SystemReset()函數(shù)后CPU ,不復(fù)位,重新上電也不工作。請(qǐng)問(wèn),有什么好辦法?
    發(fā)表于 09-08 06:09

    華大單片機(jī)怎么用NVIC_SystemReset()軟復(fù)位?

    華大HC32F003單片機(jī)可以直接調(diào)用NVIC_SystemReset()進(jìn)行軟復(fù)位嗎,如何確保復(fù)位成功,目前發(fā)現(xiàn)有時(shí)候不能正常復(fù)位。
    發(fā)表于 09-27 06:09

    NVIC_CoreReset內(nèi)核復(fù)位

    關(guān)于復(fù)位的知識(shí),在實(shí)際項(xiàng)目中應(yīng)用的比較多。
    的頭像 發(fā)表于 07-31 16:07 ?3.4w次閱讀

    STM32F1單片機(jī)軟件復(fù)位

    基于標(biāo)準(zhǔn)外設(shè)庫(kù)V3.5.0。__set_FAULTMASK(1); //關(guān)中斷NVIC_SystemReset(); //復(fù)位先關(guān)中斷,然后復(fù)位,不要問(wèn)為什么。
    發(fā)表于 11-19 11:36 ?0次下載
    STM32F1單片機(jī)軟件<b class='flag-5'>復(fù)位</b>

    基于STM32L4的NVIC中斷系統(tǒng)

    STM32L4基于Cortex-M4架構(gòu),內(nèi)部有一個(gè)嵌套中斷向量控制器(NVIC)來(lái)管理異常,并將優(yōu)先級(jí)最高的異常提交給CPU處理。異常的編號(hào)范圍是1~255,其中編號(hào)1~15被歸為系統(tǒng)異常(如
    發(fā)表于 12-04 14:06 ?12次下載
    基于STM32L4的<b class='flag-5'>NVIC</b>中斷<b class='flag-5'>系統(tǒng)</b>

    STM32學(xué)習(xí)筆記(五)---NVIC

    STM32學(xué)習(xí)筆記(五)—NVIC文章目錄STM32學(xué)習(xí)筆記(五)---NVIC一、NVIC簡(jiǎn)介二、中斷優(yōu)先級(jí)優(yōu)先級(jí)定義優(yōu)先級(jí)分組三、中斷編程F407在內(nèi)核水平上搭載了一個(gè)異常響應(yīng)系統(tǒng)
    發(fā)表于 12-04 18:51 ?16次下載
    STM32學(xué)習(xí)筆記(五)---<b class='flag-5'>NVIC</b>

    STM32 NVIC相關(guān)庫(kù)函數(shù)解析

    一、中斷優(yōu)先級(jí)分組函數(shù):1)相關(guān)寄存器實(shí)際上,STM32的中斷優(yōu)先級(jí)只用到高4位,如下圖所示:void NVIC_PriorityGroupConfig(uint32_t
    發(fā)表于 12-04 20:36 ?7次下載
    STM32 <b class='flag-5'>NVIC</b>相關(guān)庫(kù)函數(shù)解析

    NVIC_SystemReset使用及系統(tǒng)復(fù)位

    NVIC_SystemReset:STM32中NVIC_SystemReset()函數(shù)的作用?什么時(shí)候用?STM32軟件復(fù)位有兩種方式(1)方式一: NVIC_SystemReset(
    發(fā)表于 12-08 11:36 ?11次下載
    <b class='flag-5'>NVIC</b>_SystemReset使用及<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>復(fù)位</b>

    STM32軟件復(fù)位

    的 core_cm3.h 文件里 直接提供了 系統(tǒng)復(fù)位的函數(shù) static __INLINE void NVIC_SystemReset(void){ SCB-&amp;gt;AIRCR = ((0x5F...
    發(fā)表于 12-08 11:51 ?2次下載
    STM32軟件<b class='flag-5'>復(fù)位</b>

    STM32F1----NVIC

    1.NVIC初始化流程配置中斷優(yōu)先級(jí)分組void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);建立
    發(fā)表于 01-17 09:37 ?6次下載
    STM32F1----<b class='flag-5'>NVIC</b>

    GD32 MCU電源復(fù)位系統(tǒng)復(fù)位有什么區(qū)別

    GD32 MCU的復(fù)位分為電源復(fù)位系統(tǒng)復(fù)位,電源復(fù)位又稱為冷復(fù)位,相較于
    的頭像 發(fā)表于 02-02 09:37 ?1211次閱讀
    GD32 MCU電源<b class='flag-5'>復(fù)位</b>和<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>復(fù)位</b>有什么區(qū)別