日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

Ⅰ寫在前面

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C語(yǔ)言版函數(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ù)位是置位同一個(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ù):

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

}


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

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

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

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

Main函數(shù)中主要以LED1和LED2兩個(gè)IO來(lái)說(shuō)明。

LED1作為"標(biāo)志燈": 上電"標(biāo)志"置為高;

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

請(qǐng)?jiān)趍ain函數(shù)中應(yīng)用不同的配置進(jìn)行測(cè)試:

#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)盤鏈接失效,可以微信公眾號(hào)“底部菜單”查看更新鏈接。

聲明:本文內(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)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    4

    文章

    1476

    瀏覽量

    43098
  • STM32
    +關(guān)注

    關(guān)注

    2313

    文章

    11195

    瀏覽量

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

    關(guān)注

    0

    文章

    179

    瀏覽量

    25094
  • 定時(shí)器計(jì)數(shù)器

    關(guān)注

    0

    文章

    3

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    同步復(fù)位和異步復(fù)位到底該用哪個(gè)

    做FPGA/數(shù)字IC設(shè)計(jì)的,平時(shí)寫得最多的可能就是復(fù)位邏輯了。但你有沒(méi)有這種感覺(jué):看別人代碼,有的用同步復(fù)位,有的用異步復(fù)位,有的又搞什么"異步復(fù)位同步釋放"——到底該用哪個(gè)?
    的頭像 發(fā)表于 04-22 09:42 ?413次閱讀
    同步<b class='flag-5'>復(fù)位</b>和異步<b class='flag-5'>復(fù)位</b>到底該用哪個(gè)

    Fujitsu ARM CM3 MCU - FM3 系列:MB9BF100/300/400/500 型號(hào)解析

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

    JL杰理AC696N開發(fā)板開發(fā)藍(lán)牙音頻方案之電源管理進(jìn)階:內(nèi)核電壓調(diào)節(jié)與長(zhǎng)按復(fù)位

    前面聊了復(fù)位源查詢和IO喚醒配置,這些都是低功耗的基礎(chǔ)。但在實(shí)際產(chǎn)品中,電源管理還有幾個(gè)坑值得單獨(dú)拎出來(lái)說(shuō)。內(nèi)核電壓什么時(shí)候該提、SD卡供電腳怎么控制、長(zhǎng)按復(fù)位怎么配才能不誤觸發(fā)——這些配置看著
    的頭像 發(fā)表于 03-28 00:18 ?307次閱讀
    JL杰理AC696N開發(fā)板開發(fā)藍(lán)牙音頻方案之電源管理進(jìn)階:<b class='flag-5'>內(nèi)核</b>電壓調(diào)節(jié)與長(zhǎng)按<b class='flag-5'>復(fù)位</b>

    MAX6443–MAX6452:具備長(zhǎng)手動(dòng)復(fù)位設(shè)置周期的微處理器復(fù)位電路

    MAX6443–MAX6452:具備長(zhǎng)手動(dòng)復(fù)位設(shè)置周期的微處理器復(fù)位電路 在電子設(shè)備的設(shè)計(jì)中,微處理器復(fù)位電路起著至關(guān)重要的作用,它能確保設(shè)備在各種情況下穩(wěn)定運(yùn)行。今天我們就來(lái)詳細(xì)了解一下
    的頭像 發(fā)表于 02-27 14:45 ?358次閱讀

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

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

    Microchip TCM809/TCM810:高效的3引腳微控制器復(fù)位監(jiān)控器

    Microchip TCM809/TCM810:高效的3引腳微控制器復(fù)位監(jiān)控器 電子工程師在設(shè)計(jì)數(shù)字系統(tǒng)時(shí),電源監(jiān)控和復(fù)位功能至關(guān)重要。今天就來(lái)跟大家介紹一款由Microchip推出的
    的頭像 發(fā)表于 01-13 17:00 ?697次閱讀

    CW32在不同復(fù)位方式對(duì)應(yīng)的復(fù)位范圍

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

    什么是內(nèi)核LOCKUP故障復(fù)位?

    當(dāng) CPU 遇到嚴(yán)重異常(如讀取到的指令無(wú)效、訪問(wèn) FLASH 時(shí)位寬和目標(biāo)地址不匹配),會(huì)將 PC 指針停在當(dāng)前地址處鎖定,并產(chǎn)生內(nèi)核 LOCKUP 故障復(fù)位信號(hào)。 芯片上電后,LOCKUP 復(fù)位
    發(fā)表于 12-15 08:33

    CW32F030支持的6種系統(tǒng)復(fù)位方式分享

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

    內(nèi)核LOCKUP故障復(fù)位方法

    當(dāng) CPU 遇到嚴(yán)重異常(如讀取到的指令無(wú)效、訪問(wèn) FLASH 時(shí)位寬和目標(biāo)地址不匹配),會(huì)將 PC 指針停在當(dāng)前地址處鎖定,并產(chǎn)生內(nèi)核 LOCKUP 故障復(fù)位信號(hào)。芯片上電后,LOCKUP 復(fù)位
    發(fā)表于 12-11 07:15

    用于穩(wěn)定電源設(shè)計(jì)的復(fù)位IC應(yīng)用實(shí)例

    現(xiàn)代電子設(shè)備正面臨電壓波動(dòng)、浪涌電壓以及輸入電源不穩(wěn)定等問(wèn)題。如果缺乏適當(dāng)?shù)碾妷罕O(jiān)測(cè)與復(fù)位保護(hù)功能,系統(tǒng)可能會(huì)出現(xiàn)誤動(dòng)作、異常復(fù)位,甚至導(dǎo)致硬件損壞。
    的頭像 發(fā)表于 12-08 09:41 ?759次閱讀
    用于穩(wěn)定電源設(shè)計(jì)的<b class='flag-5'>復(fù)位</b>IC應(yīng)用實(shí)例

    揭秘RESET復(fù)位鍵:引腳設(shè)計(jì)如何支撐硬件系統(tǒng)的重啟通路

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

    GraniStudio:軸復(fù)位例程

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

    GraniStudio零代碼平臺(tái)軸復(fù)位算子支持多少個(gè)軸同時(shí)復(fù)位,有哪些回零模式?

    GraniStudio平臺(tái)在軸復(fù)位的功能上未對(duì)同時(shí)復(fù)位的軸數(shù)進(jìn)行硬性限制,理論上支持任意數(shù)量軸同步復(fù)位,需要考慮的是在做多軸同步復(fù)位時(shí)要評(píng)估機(jī)械安全風(fēng)險(xiǎn),建議提前確認(rèn)機(jī)械在多軸同時(shí)
    的頭像 發(fā)表于 07-07 18:02 ?798次閱讀
    GraniStudio零代碼平臺(tái)軸<b class='flag-5'>復(fù)位</b>算子支持多少個(gè)軸同時(shí)<b class='flag-5'>復(fù)位</b>,有哪些回零模式?

    復(fù)位電路的核心功能和主要類型

    復(fù)位電路(Reset Circuit) 是數(shù)字系統(tǒng)中的關(guān)鍵功能模塊,用于確保設(shè)備在上電、電壓波動(dòng)或異常狀態(tài)下可靠復(fù)位至初始狀態(tài)。其設(shè)計(jì)直接影響系統(tǒng)的穩(wěn)定性和抗干擾能力。
    的頭像 發(fā)表于 06-30 14:24 ?1911次閱讀
    <b class='flag-5'>復(fù)位</b>電路的核心功能和主要類型
    隆德县| 鄂州市| 桐梓县| 饶平县| 土默特左旗| 山西省| 阿克陶县| 苏尼特左旗| 旺苍县| 太湖县| 永修县| 临夏县| 奎屯市| 临洮县| 江孜县| 比如县| 托里县| 共和县| 法库县| 靖江市| 崇文区| 柯坪县| 大荔县| 阜阳市| 微山县| 沾化县| 鹤壁市| 酉阳| 清河县| 迁安市| 绵阳市| 吴堡县| 买车| 清水河县| 遵义市| 广东省| 德惠市| 措勤县| 蒙山县| 通化市| 樟树市|