女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

CM3(STM32) 內(nèi)核復(fù)位與系統(tǒng)復(fù)位區(qū)別及應(yīng)用

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-20 09:43 ? 次閱讀

Ⅰ寫在前面

某些系統(tǒng)允許復(fù)位,但對外設(shè)又有特殊要求:某一個IO狀態(tài)不能因為復(fù)位而改變,某一個定時器計數(shù)器不能改變等。

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

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

這個時候如果我使用常規(guī)的引腳復(fù)位,就會使IO置低,不符合要求,就需要使用到本文說到的內(nèi)核復(fù)位。

Ⅱ關(guān)于復(fù)位

說到復(fù)位,我們都不會陌生,學(xué)習(xí)時,開發(fā)板上基本都有一個復(fù)位按鍵。

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

上面說的復(fù)位按鍵,也就是對應(yīng)復(fù)位引腳復(fù)位;而本文說的內(nèi)核復(fù)位與系統(tǒng)復(fù)位是屬于軟件復(fù)位。

Ⅲ內(nèi)核與系統(tǒng)復(fù)位區(qū)別

本文說的內(nèi)核是指處理器內(nèi)核,拿STM32F1處理器來說,STM32F1的內(nèi)核就是Cortex-M3內(nèi)核,而這里的系統(tǒng)就是包含內(nèi)核和外設(shè)整個一起。

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

系統(tǒng)復(fù)位:這個復(fù)位會使整個芯片的所有電路都進行復(fù)位,我們查看寄存器手冊時,會發(fā)現(xiàn)某某某寄存器復(fù)位值等于多少。

因此,我們常說的復(fù)位一般指的就是系統(tǒng)復(fù)位。

Ⅳ內(nèi)核與系統(tǒng)復(fù)位應(yīng)用及代碼分析

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

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

void NVIC_CoreReset(void);

void NVIC_CoreReset_a(void);

void NVIC_SysReset(void);

void NVIC_SysReset_a(void);

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

同時結(jié)合core_cm3.h源代碼,其中系統(tǒng)復(fù)位中的C語言版就是core_cm3.h里面的源代碼。

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

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

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

C語言版函數(shù):

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);

}

匯編版函數(shù):

__asm void NVIC_CoreReset_a(void)

{

LDR R0, =0xE000ED0C

LDR R1, =0x05FA0001 //置位VECTRESET

STR R1, [R0]

deadloop_Core

B deadloop_Core

}

內(nèi)核主要注意:SCB_AIRCR_VECTRESET_Msk和LDR R1, =0x05FA0001,它是和系統(tǒng)復(fù)位唯一的區(qū)別。

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

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

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

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

C語言版函數(shù):

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);

}

匯編版函數(shù):

__asm void NVIC_SysReset_a(void)

{

LDR R0, =0xE000ED0C

LDR R1, =0x05FA0004

STR R1, [R0]

deadloop_Sys

B deadloop_Sys

}


細心的朋友可能會發(fā)現(xiàn):

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

C語言版本的代碼和core_cm3.h中NVIC_SystemReset函數(shù)相似。對的這個函數(shù)就是系統(tǒng)復(fù)位函數(shù),而我們的內(nèi)核復(fù)位只是簡單修改了一下。

3.main函數(shù)應(yīng)用

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

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

LED2作為指示燈:看從內(nèi)核啟動改變狀態(tài)沒有。

請在main函數(shù)中應(yīng)用不同的配置進行測試:

#if 0 /* 內(nèi)核復(fù)位 */

NVIC_CoreReset();

// NVIC_CoreReset_a();

#else /* 系統(tǒng)復(fù)位 */

NVIC_SysReset();

// NVIC_SysReset_a();

#endif

Ⅴ下載

Cotrex-M3權(quán)威指南:

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

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

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

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

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

    關(guān)注

    3

    文章

    1410

    瀏覽量

    41105
  • STM32
    +關(guān)注

    關(guān)注

    2290

    文章

    11017

    瀏覽量

    362405
  • 復(fù)位
    +關(guān)注

    關(guān)注

    0

    文章

    179

    瀏覽量

    24562
  • 定時器計數(shù)器
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1094
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    LM3724系列 低功率電壓監(jiān)控和復(fù)位IC,帶手動復(fù)位功能數(shù)據(jù)手冊

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

    RT1170EVKB如何設(shè)置CM7和CM4內(nèi)核來實現(xiàn)它們自己的看門狗外設(shè)?

    7 使用 WDOG1 進行系統(tǒng)復(fù)位,那么 CM4 的看門狗應(yīng)該如何設(shè)置以防止意外的代碼執(zhí)行故障?CM4 應(yīng)該使用 WDOG3/4 還是其他
    發(fā)表于 03-17 07:03

    復(fù)位電路的作用、控制方式和類型

    復(fù)位電路也是數(shù)字邏輯設(shè)計中常用的電路,不管是 FPGA 還是 ASIC 設(shè)計,都會涉及到復(fù)位,一般 FPGA或者 ASIC 的復(fù)位需要我們自己設(shè)計復(fù)位方案。
    的頭像 發(fā)表于 03-12 13:54 ?1916次閱讀
    <b class='flag-5'>復(fù)位</b>電路的作用、控制方式和類型

    FPGA復(fù)位的8種技巧

    在 FPGA 設(shè)計中,復(fù)位起到的是同步信號的作用,能夠?qū)⑺械拇鎯υO(shè)置成已知狀態(tài)。在數(shù)字電路設(shè)計中,設(shè)計人員一般把全局復(fù)位作為一個外部引腳來實現(xiàn),在加電的時候初始化設(shè)計。全局復(fù)位引腳與任何
    的頭像 發(fā)表于 11-16 10:18 ?1035次閱讀
    FPGA<b class='flag-5'>復(fù)位</b>的8種技巧

    復(fù)位電路的設(shè)計問題

    前言 最近看advanced fpga 以及fpga設(shè)計實戰(zhàn)演練中有講到復(fù)位電路的設(shè)計,才知道復(fù)位電路有這么多的門道,而不是簡單的外界信號輸入系統(tǒng)復(fù)位。 流程: 1.同步
    的頭像 發(fā)表于 11-15 11:13 ?463次閱讀
    <b class='flag-5'>復(fù)位</b>電路的設(shè)計問題

    復(fù)位電路的三種方式 復(fù)位電路的原理和作用

    復(fù)位電路是一種電子電路,用于將微控制器或其他電子設(shè)備重置到其初始狀態(tài)。這種電路通常在設(shè)備啟動時或在需要清除當(dāng)前狀態(tài)以避免錯誤時使用。 1. 上電復(fù)位(Power-On Reset, POR
    的頭像 發(fā)表于 10-21 10:28 ?4444次閱讀

    復(fù)位電路的電容多大的 復(fù)位電路設(shè)計類型有哪幾種

    復(fù)位電路是電子系統(tǒng)中的一個關(guān)鍵部分,它確保系統(tǒng)在啟動或發(fā)生故障時能夠正確地初始化。復(fù)位電路的設(shè)計取決于多種因素,包括系統(tǒng)的復(fù)雜性、所需的
    的頭像 發(fā)表于 10-21 10:24 ?910次閱讀

    復(fù)位電路靜電整改案例分享(一)——交換機復(fù)位電路

    ? ?復(fù)位電路靜電整改案例分享(一)——交換機復(fù)位電路 一、摘要 復(fù)位電路可確保電路在啟動時處于可控的狀態(tài),避免上電造成的未知問題。復(fù)位電路通常由一個
    的頭像 發(fā)表于 10-19 14:56 ?850次閱讀
    <b class='flag-5'>復(fù)位</b>電路靜電整改案例分享(一)——交換機<b class='flag-5'>復(fù)位</b>電路

    復(fù)位電路介紹 復(fù)位電路的原理及作用

    復(fù)位電路(Reset Circuit)是現(xiàn)代電子設(shè)備中常見的一種關(guān)鍵電路,它用于確保在正確的時間和條件下將系統(tǒng)恢復(fù)到初始狀態(tài)。復(fù)位電路的設(shè)計和應(yīng)用對于保障電子系統(tǒng)的穩(wěn)定性和可靠性至關(guān)重
    的頭像 發(fā)表于 10-18 16:44 ?6959次閱讀

    具有響應(yīng)檢測和系統(tǒng)復(fù)位功能的控制器

    電子發(fā)燒友網(wǎng)站提供《具有響應(yīng)檢測和系統(tǒng)復(fù)位功能的控制器.pdf》資料免費下載
    發(fā)表于 09-06 09:45 ?0次下載
    具有響應(yīng)檢測和<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>復(fù)位</b>功能的控制器

    STM32復(fù)位電路用復(fù)位芯片和阻容復(fù)位電路區(qū)別

    STM32是一款廣泛使用的微控制器,其復(fù)位電路設(shè)計對于系統(tǒng)的穩(wěn)定性和可靠性至關(guān)重要。本文將詳細介紹STM32復(fù)位電路中使用
    的頭像 發(fā)表于 08-06 10:26 ?2729次閱讀

    雙管正激勵磁復(fù)位電路的作用

    雙管正激勵磁復(fù)位電路是一種廣泛應(yīng)用于電子設(shè)備中的電路,它具有多種功能和優(yōu)點。 一、雙管正激勵磁復(fù)位電路的作用 雙管正激勵磁復(fù)位電路是一種特殊的電路,它具有以下主要作用: 提供穩(wěn)定的電源:雙管正激勵磁
    的頭像 發(fā)表于 08-02 15:41 ?956次閱讀

    JK觸發(fā)器的置位和復(fù)位有什么區(qū)別

    JK觸發(fā)器的置位(Set)和復(fù)位(Reset)是其在數(shù)字電路中的兩種基本狀態(tài)控制功能,它們在操作原理、輸入條件以及觸發(fā)器輸出狀態(tài)的變化上有所區(qū)別。以下是對JK觸發(fā)器置位和復(fù)位的詳細分析。
    的頭像 發(fā)表于 07-27 14:50 ?3688次閱讀

    FPGA同步復(fù)位和異步復(fù)位

    FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)中的復(fù)位操作是設(shè)計過程中不可或缺的一環(huán),它負責(zé)將電路恢復(fù)到初始狀態(tài),以確保系統(tǒng)的正確啟動和穩(wěn)定運行。在FPGA設(shè)計中,復(fù)位方式主要分為同步
    的頭像 發(fā)表于 07-17 11:12 ?2455次閱讀

    請問stm32f 103復(fù)位復(fù)位時間可以設(shè)置多長?

    stm32f103復(fù)位復(fù)位時間可以設(shè)置多長??可以直接在復(fù)位腳直接加一個電容嗎?
    發(fā)表于 07-04 08:27