伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CM3(STM32) 內核復位與系統復位區別及應用

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-20 09:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ⅰ寫在前面

某些系統允許復位,但對外設又有特殊要求:某一個IO狀態不能因為復位而改變,某一個定時器計數器不能改變等。

例子:我一個A系統通過一個IO控制另一個B系統的電源,而這個IO置高時才開啟B系統的電源。

正常工作過程中,B系統只有收到A系統關機命令任務才會進行關機(也就是說不能掉電關機),而A系統在工作過程中有復位的需求。

這個時候如果我使用常規的引腳復位,就會使IO置低,不符合要求,就需要使用到本文說到的內核復位。

Ⅱ關于復位

說到復位,我們都不會陌生,學習時,開發板上基本都有一個復位按鍵。

復位的種類有很多:上電復位、掉電復位、復位引腳復位、看門狗復位、軟件復位等。

上面說的復位按鍵,也就是對應復位引腳復位;而本文說的內核復位與系統復位是屬于軟件復位。

Ⅲ內核與系統復位區別

本文說的內核是指處理器內核,拿STM32F1處理器來說,STM32F1的內核就是Cortex-M3內核,而這里的系統就是包含內核和外設整個一起。

內核復位:它會使Cortex-M3進行復位,而不會影響其外設,如GPIO、TIM、USART、SPI等這些寄存器的復位。

系統復位:這個復位會使整個芯片的所有電路都進行復位,我們查看寄存器手冊時,會發現某某某寄存器復位值等于多少。

因此,我們常說的復位一般指的就是系統復位。

Ⅳ內核與系統復位應用及代碼分析

本文拿CM3(STM32F1)進行舉例說明,其他芯片類似。在下一節提供源代碼工程供大家參考學習。

本文提供的復位函數分:內核和系統復位、C語言匯編共四個版本(在一個工程),主要講解其4個函數。

void NVIC_CoreReset(void);

void NVIC_CoreReset_a(void);

void NVIC_SysReset(void);

void NVIC_SysReset_a(void);

本章節內容可以參照Cotrex-M3權威指南中,Cotrex-M3其他特性章節下的自復位控制(軟件復位)。中文版位于第13張,英文版位于第14張。

同時結合core_cm3.h源代碼,其中系統復位中的C語言版就是core_cm3.h里面的源代碼。

1.NVIC_CoreReset內核復位

CM3 允許由軟件觸發復位序列,用于特殊的調試或維護目的。在CM3中,有兩種方法可以執行自我復位。第一種方法,是通過置位 NVIC 中應用程序中斷與復位控制寄存器(AIRCR)的VECTRESET 位(位偏移:0)。

這種復位的作用范圍覆蓋了整個CM3處理器中,除了調試邏輯之外的所有角落,但是它不會影響到 CM3 處理器外部的任何電路,所以單片機上的各片上外設和其它電路都不受影響。

C語言版函數:

voidNVIC_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,它是和系統復位唯一的區別。

2.NVIC_SysReset系統復位

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

大多數情況下,復位發生器在響應 SYSRESETREQ 時,它也會同時把 CM3 處理器的系統復位信號(SYSRESETn)置為有效。通常, SYSRESETREQ 不應復位調試邏輯。

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

C語言版函數:

void NVIC_SysReset(void)

{

__DSB();

SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) ?????|

(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |

SCB_AIRCR_SYSRESETREQ_Msk);

__DSB();

while(1);

}

匯編版函數:

__asm void NVIC_SysReset_a(void)

{

LDR R0, =0xE000ED0C

LDR R1, =0x05FA0004

STR R1, [R0]

deadloop_Sys

B deadloop_Sys

}


細心的朋友可能會發現:

內核復位與系統源代碼和相近,差異在于SYSRESETREQ和SYSRESETREQ這兩位。

C語言版本的代碼和core_cm3.h中NVIC_SystemReset函數相似。對的這個函數就是系統復位函數,而我們的內核復位只是簡單修改了一下。

3.main函數應用

Main函數中主要以LED1和LED2兩個IO來說明。

LED1作為"標志燈": 上電"標志"置為高;

LED2作為指示燈:看從內核啟動改變狀態沒有。

請在main函數中應用不同的配置進行測試:

#if 0 /* 內核復位 */

NVIC_CoreReset();

// NVIC_CoreReset_a();

#else /* 系統復位 */

NVIC_SysReset();

// NVIC_SysReset_a();

#endif

Ⅴ下載

Cotrex-M3權威指南:

http://pan.baidu.com/s/1mhQYa1q

本文講解的源代碼工程(STM32F103ZE(Keil)_Reset):

http://pan.baidu.com/s/1hskScba

提示:如果網盤鏈接失效,可以微信公眾號“底部菜單”查看更新鏈接。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    4

    文章

    1472

    瀏覽量

    43054
  • STM32
    +關注

    關注

    2311

    文章

    11179

    瀏覽量

    374154
  • 復位
    +關注

    關注

    0

    文章

    179

    瀏覽量

    25080
  • 定時器計數器

    關注

    0

    文章

    3

    瀏覽量

    1144
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Fujitsu ARM CM3 MCU - FM3 系列:MB9BF100/300/400/500 型號解析

    Fujitsu ARM CM3 MCU - FM3 系列:MB9BF100/300/400/500 型號解析 在電子工程師的日常工作中,選擇合適的微控制器(MCU)是設計成功的關鍵一步。今天,我們
    的頭像 發表于 03-28 13:05 ?117次閱讀

    JL杰理AC696N開發板開發藍牙音頻方案之電源管理進階:內核電壓調節與長按復位

    前面聊了復位源查詢和IO喚醒配置,這些都是低功耗的基礎。但在實際產品中,電源管理還有幾個坑值得單獨拎出來說。內核電壓什么時候該提、SD卡供電腳怎么控制、長按復位怎么配才能不誤觸發——這些配置看著
    的頭像 發表于 03-28 00:18 ?192次閱讀
    JL杰理AC696N開發板開發藍牙音頻方案之電源管理進階:<b class='flag-5'>內核</b>電壓調節與長按<b class='flag-5'>復位</b>

    MAX6443–MAX6452:具備長手動復位設置周期的微處理器復位電路

    MAX6443–MAX6452:具備長手動復位設置周期的微處理器復位電路 在電子設備的設計中,微處理器復位電路起著至關重要的作用,它能確保設備在各種情況下穩定運行。今天我們就來詳細了解一下
    的頭像 發表于 02-27 14:45 ?234次閱讀

    智多晶MCU硬核IP全面升級|CM3和STAR新特性介紹

    IP進行了重大升級,不僅在底層架構上實現了突破,更在易用性和擴展性上帶來了顯著提升。本文將為您詳細介紹Cortex-M3CM3)與STAR Processor的最新特性。 一、架構重組 CM3和STAR的IP做了整合,在接口
    的頭像 發表于 02-12 10:09 ?720次閱讀
    智多晶MCU硬核IP全面升級|<b class='flag-5'>CM3</b>和STAR新特性介紹

    Microchip TCM809/TCM810:高效的3引腳微控制器復位監控器

    Microchip TCM809/TCM810:高效的3引腳微控制器復位監控器 電子工程師在設計數字系統時,電源監控和復位功能至關重要。今天就來跟大家介紹一款由Microchip推出的
    的頭像 發表于 01-13 17:00 ?617次閱讀

    CW32在不同復位方式對應的復位范圍

    上電復位 / 掉電復位(POR/BOR) 整個 MCU 引腳輸入復位(NRST) 整個 MCU(除 RTC 外) IWDT/WWDT 復位 M0+
    發表于 12-22 09:44

    什么是內核LOCKUP故障復位?

    當 CPU 遇到嚴重異常(如讀取到的指令無效、訪問 FLASH 時位寬和目標地址不匹配),會將 PC 指針停在當前地址處鎖定,并產生內核 LOCKUP 故障復位信號。 芯片上電后,LOCKUP 復位
    發表于 12-15 08:33

    CW32F030支持的6種系統復位方式分享

    CW32F030 支持的6種系統復位方式: ?上電復位 / 掉電復位(POR/BOR) ?引腳輸入復位(NRST) ?IWDT/WWDT
    發表于 12-15 06:31

    內核LOCKUP故障復位方法

    當 CPU 遇到嚴重異常(如讀取到的指令無效、訪問 FLASH 時位寬和目標地址不匹配),會將 PC 指針停在當前地址處鎖定,并產生內核 LOCKUP 故障復位信號。芯片上電后,LOCKUP 復位
    發表于 12-11 07:15

    用于穩定電源設計的復位IC應用實例

    現代電子設備正面臨電壓波動、浪涌電壓以及輸入電源不穩定等問題。如果缺乏適當的電壓監測與復位保護功能,系統可能會出現誤動作、異常復位,甚至導致硬件損壞。
    的頭像 發表于 12-08 09:41 ?709次閱讀
    用于穩定電源設計的<b class='flag-5'>復位</b>IC應用實例

    揭秘RESET復位鍵:引腳設計如何支撐硬件系統的重啟通路

    RESET復位鍵在電子設備中承擔著重啟通路的核心角色,當系統因軟件故障、硬件沖突或電源波動陷入異常時,它能通過硬件層面的強制復位,使設備快速脫離故障狀態。這一功能的實現基于引腳功能與硬件設計的深度
    的頭像 發表于 11-28 15:18 ?426次閱讀
    揭秘RESET<b class='flag-5'>復位</b>鍵:引腳設計如何支撐硬件<b class='flag-5'>系統</b>的重啟通路

    GraniStudio:軸復位例程

    1.文件運行 導入工程 雙擊運行桌面GraniStudio.exe。 通過引導界面導入軸復位例程,點擊導入按鈕。 打開軸復位運動例程所在路徑,選中軸復位運動.gsp文件,點擊打開,完成導入。 2.
    的頭像 發表于 08-22 16:05 ?728次閱讀
    GraniStudio:軸<b class='flag-5'>復位</b>例程

    GraniStudio零代碼平臺軸復位算子支持多少個軸同時復位,有哪些回零模式?

    GraniStudio平臺在軸復位的功能上未對同時復位的軸數進行硬性限制,理論上支持任意數量軸同步復位,需要考慮的是在做多軸同步復位時要評估機械安全風險,建議提前確認機械在多軸同時
    的頭像 發表于 07-07 18:02 ?724次閱讀
    GraniStudio零代碼平臺軸<b class='flag-5'>復位</b>算子支持多少個軸同時<b class='flag-5'>復位</b>,有哪些回零模式?

    復位電路的核心功能和主要類型

    復位電路(Reset Circuit) 是數字系統中的關鍵功能模塊,用于確保設備在上電、電壓波動或異常狀態下可靠復位至初始狀態。其設計直接影響系統的穩定性和抗干擾能力。
    的頭像 發表于 06-30 14:24 ?1708次閱讀
    <b class='flag-5'>復位</b>電路的核心功能和主要類型

    LM3724系列 低功率電壓監控和復位IC,帶手動復位功能數據手冊

    LM3722/LM3723/LM3724 微處理器監控電路可監控電源 在微處理器和數字系統中。它們在上電期間為微處理器提供復位, 掉電、掉電條件和手動復位。 LM3722/LM3723
    的頭像 發表于 04-12 11:11 ?1106次閱讀
    LM3724系列 低功率電壓監控和<b class='flag-5'>復位</b>IC,帶手動<b class='flag-5'>復位</b>功能數據手冊