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

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

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

如何設(shè)計在stm32中的復(fù)位電路?

2oON_changxuemc ? 來源:未知 ? 作者:胡薇 ? 2018-08-10 11:33 ? 次閱讀

說到復(fù)位,我們都不會陌生,系統(tǒng)基本都有一個復(fù)位按鍵。復(fù)位的種類有很多:上電復(fù)位、掉電復(fù)位、復(fù)位引腳復(fù)位、看門狗復(fù)位、軟件復(fù)位等。本文探討的就是在stm32中復(fù)位電路如何設(shè)計。

STM32介紹

STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARMCortex?-M0,M0+,M3, M4和M7內(nèi)核在STM32F105和STM32F107互連型系列微控制器之前,意法半導(dǎo)體已經(jīng)推出STM32基本型系列、增強(qiáng)型系列、USB基本型系列、互補(bǔ)型系列;新系列產(chǎn)品沿用增強(qiáng)型系列的72MHz處理頻率。內(nèi)存包括64KB到256KB閃存和 20KB到64KB嵌入式SRAM

新系列采用LQFP64、LQFP100和LFBGA100三種封裝,不同的封裝保持引腳排列一致性,結(jié)合STM32平臺的設(shè)計理念,開發(fā)人員通過選擇產(chǎn)品可重新優(yōu)化功能、存儲器、性能和引腳數(shù)量,以最小的硬件變化來滿足個性化的應(yīng)用需求。

stm32復(fù)位電路設(shè)計

復(fù)位電路的作用是為了是系統(tǒng)恢復(fù)到初始狀態(tài)的,單片機(jī)的復(fù)位方式也是存在好幾種的:上電復(fù)位,系統(tǒng)復(fù)位,備份區(qū)域復(fù)位

上電復(fù)位:其產(chǎn)生的條件是,當(dāng)系統(tǒng)上電、掉電,以及系統(tǒng)從待機(jī)模式返回時,發(fā)生電源復(fù)位。電源復(fù)位能夠復(fù)位除了備份區(qū)域寄存器之外的所有寄存器的狀態(tài)。

系統(tǒng)復(fù)位:以下任一事件發(fā)生時,均能產(chǎn)生一個系統(tǒng)復(fù)位:

1. NRST引腳上的低電平(外部復(fù)位)

2. 窗口看門狗計數(shù)終止(WWDG復(fù)位)

3. 獨(dú)立看門狗計數(shù)終止(IWDG復(fù)位)

4. 軟件復(fù)位(SW復(fù)位)

5. 低功耗管理復(fù)位

系統(tǒng)復(fù)位能夠復(fù)位除時鐘控制寄存器CRS中的復(fù)位標(biāo)志和備份區(qū)域中的寄存器之外的所有寄存器。

備份區(qū)域復(fù)位:對于備份區(qū)域的復(fù)位,一種是在軟件復(fù)位的時候設(shè)定備份區(qū)域控制寄存器中的對應(yīng)位產(chǎn)生的;另一種是當(dāng)電源和電池都掉電又重新上電時產(chǎn)生的。

平常我們常用的復(fù)位方式有兩種,一種是NRST引腳的低電平復(fù)位,通過按鍵復(fù)位電路給這個引腳一個低電平,讓系統(tǒng)完成復(fù)位,另一種大家都知道,那就是上電復(fù)位了,有時候是復(fù)位電路莫名失效了,有時是剛啟動的時候,雖然用的沒有按鍵復(fù)位電路多,不過也算是很常用的一種復(fù)位方式了。按鍵復(fù)位電路直接給圖了,網(wǎng)上的講解可能把這電路圖都講爛了,我就不費(fèi)口舌了。

電容充電時間計算:T = 1.1RC = 1.1 * 10000 * 0.0000001 = 0.0011s = 1.1ms

STM32 內(nèi)核復(fù)位 與 系統(tǒng)復(fù)位

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

本文說的內(nèi)核是指處理器內(nèi)核,也就是MPU(Microprocessor Unit)。比如STM32F103,其內(nèi)核就是Cortex-M3內(nèi)核。

而這里的系統(tǒng)就是包含內(nèi)核和外設(shè),也就是MCU(Microcontroller Unit),對于STM32F103來說,就是Cortex-M3內(nèi)核+各種外設(shè)接口

內(nèi)核復(fù)位:只復(fù)位Cortex-M3處理器,而不復(fù)位外設(shè)如GPIO、TIM、USART、SPI等的寄存器。

系統(tǒng)復(fù)位:即復(fù)位Cortex-M3處理器,又復(fù)位外設(shè)寄存器。

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

內(nèi)核復(fù)位與系統(tǒng)復(fù)位的函數(shù)源代碼

本文以Cortex-M3(STM32F103)為例來說明,其他芯片類似。

編寫了4個復(fù)位函數(shù),內(nèi)核復(fù)位(C語言)、內(nèi)核復(fù)位(匯編)和系統(tǒng)復(fù)位(C語言)、系統(tǒng)復(fù)位(匯編):

void NVIC_CoreReset(void); //內(nèi)核復(fù)位(C語言)

void NVIC_CoreReset_a(void); //內(nèi)核復(fù)位(匯編)

void NVIC_SystemReset(void); //系統(tǒng)復(fù)位(C語言)

void NVIC_SystemReset_a(void); //系統(tǒng)復(fù)位(匯編)

在ST官方庫中的core_cm3.h文件中已經(jīng)提供了NVIC_SystemReset的C語言源代碼。

Cortex-M3允許由軟件觸發(fā)復(fù)位序列,用于特殊的調(diào)試或維護(hù)。在Cortex-M3中,有兩種方法可以實(shí)現(xiàn)自我復(fù)位。

第一種方法:置位 NVIC 中應(yīng)用程序中斷與復(fù)位控制寄存器(AIRCR)的 VECTRESET 位(位偏移:0)。

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

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

編寫的NVIC_CoreReset函數(shù)C語言源碼:

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

}匯編版函數(shù)源碼:

__asm void NVIC_CoreReset_a(void)

{

LDR R0, =0xE000ED0C

LDR R1, =0x05FA0001 //置位VECTRESET

STR R1, [R0]

deadloop_Core

B deadloop_Core

}

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

第二種方法:置位 NVIC 中應(yīng)用程序中斷與復(fù)位控制寄存器(AIRCR)的 SYSRESETREQ位(位偏移:2)。

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

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

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

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

core_cm3.h中提供的NVIC_SystemReset函數(shù)C語言源碼:

staTIc __INLINE void NVIC_SystemReset(void)

{

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

(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |

SCB_AIRCR_SYSRESETREQ_Msk);

__DSB(); /* Ensure compleTIon of memory access /

while(1); /* wait unTIl reset */

}

匯編版函數(shù):

__asm void NVIC_SysReset_a(void)

{

LDR R0, =0xE000ED0C

LDR R1, =0x05FA0004

STR R1, [R0]

deadloop_Sys

B deadloop_Sys

}

結(jié)語

某些系統(tǒng)允許復(fù)位,但對外設(shè)又有特殊要求:某一個IO狀態(tài)不能因?yàn)閺?fù)位而改變,某一個定時器計數(shù)器不能改變等。例子:A系統(tǒng)通過一個IO控制B系統(tǒng)的電源,而這個IO置高時才開啟B系統(tǒng)的電源。

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

這個時候如果使用常規(guī)的復(fù)位方式,就會復(fù)位IO,不符合要求。如果有一種方式只復(fù)位內(nèi)核而不復(fù)位外設(shè)就好了。

關(guān)于stm32復(fù)位電路相關(guān)介紹就到這了,希望通過本文能讓你對stm32復(fù)位電路有更深的認(rèn)識,如有不足之處還望海涵。

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

    關(guān)注

    2262

    文章

    10846

    瀏覽量

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

    關(guān)注

    13

    文章

    319

    瀏覽量

    44486

原文標(biāo)題:淺析stm32復(fù)位電路方法

文章出處:【微信號:changxuemcu,微信公眾號:暢學(xué)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    stm32復(fù)位電路電阻和電容怎么搭配

    搭配STM32復(fù)位電路的電阻和電容需要考慮多個因素,包括復(fù)位脈沖的寬度、電源穩(wěn)定時間、電源噪聲抑制等。本文中,我將詳細(xì)介紹如何搭配電阻和電
    的頭像 發(fā)表于 12-07 16:24 ?2759次閱讀

    stm32復(fù)位電路工作原理

    stm32復(fù)位電路工作原理 相信大家對復(fù)位電路已經(jīng)很熟悉了,復(fù)位
    的頭像 發(fā)表于 08-07 11:59 ?3.7w次閱讀

    stm32復(fù)位電路問題

    引腳內(nèi)部是有上拉電阻的。只有認(rèn)為上拉電流不足情況下才有必要外接上拉電阻。因此,rst電路僅保留一個104電容是可行的。我設(shè)計的電路刪掉10k上拉電阻后,芯片也可以正常啟動、燒寫、
    發(fā)表于 12-24 19:24 ?11次下載
    <b class='flag-5'>stm32</b>的<b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>問題

    STM32復(fù)位電路

    **STM32復(fù)位電路**
    發(fā)表于 12-24 19:28 ?24次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>

    STM32復(fù)位源判斷

    項(xiàng)目中有時候會遇到單片機(jī)莫名奇妙復(fù)位的情況,為了判斷是那種原因引起復(fù)位,就需要對單片機(jī)的復(fù)位源進(jìn)行判斷。現(xiàn)用STM32F103C8T6單片
    發(fā)表于 01-17 12:29 ?12次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>復(fù)位</b>源判斷

    STM32復(fù)位來源、以及系統(tǒng)和內(nèi)核復(fù)位區(qū)別

    每一塊STM32都有這么一個RCC復(fù)位和時鐘控制模塊。STM32復(fù)位為三類:系統(tǒng)復(fù)位、電源
    發(fā)表于 02-10 10:30 ?6次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>復(fù)位</b>來源、以及系統(tǒng)和內(nèi)核<b class='flag-5'>復(fù)位</b>區(qū)別

    淺析stm32復(fù)位電路方法

    說到復(fù)位,我們都不會陌生,系統(tǒng)基本都有一個復(fù)位按鍵。復(fù)位的種類有很多:上電復(fù)位、掉電復(fù)位、復(fù)位
    發(fā)表于 02-11 15:10 ?45次下載
    淺析<b class='flag-5'>stm32</b><b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>方法

    stm32復(fù)位電路設(shè)計

    stm32復(fù)位電路設(shè)計
    發(fā)表于 06-26 09:26 ?8次下載

    stm32復(fù)位電路如何設(shè)計

    1,描述 ? 說到復(fù)位,我們都不會陌生,系統(tǒng)基本都有一個復(fù)位按鍵。復(fù)位的種類有很多:上電復(fù)位、掉電復(fù)位、
    的頭像 發(fā)表于 06-22 09:06 ?2296次閱讀

    stm32復(fù)位 內(nèi)核復(fù)位和系統(tǒng)復(fù)位

    內(nèi)核復(fù)位:它會使STM32內(nèi)核(Cortex-M)進(jìn)行復(fù)位,而不會影響其外設(shè),如GPIO、TIM、USART、SPI等這些寄存器的復(fù)位。
    的頭像 發(fā)表于 08-01 17:21 ?4499次閱讀

    stm32手動復(fù)位按鍵出的電容有什么作用?

    stm32手動復(fù)位按鍵出的電容有什么作用? 外部復(fù)位電路是嵌入式系統(tǒng)的一項(xiàng)核心功能。這種電路
    的頭像 發(fā)表于 09-14 14:22 ?3660次閱讀

    RC復(fù)位電路R如何影響芯片復(fù)位?

    RC復(fù)位電路R如何影響芯片復(fù)位? RC復(fù)位電路是常見的一種
    的頭像 發(fā)表于 10-25 11:07 ?1136次閱讀

    stm32復(fù)位電容容值

    STM32是意法半導(dǎo)體(STMicroelectronics)推出的一系列32位微控制器,具有低功耗、高性能和豐富的外設(shè)功能。STM32微控制器,
    的頭像 發(fā)表于 01-05 17:39 ?1568次閱讀

    電容復(fù)位電路的作用(復(fù)位電路具體要怎么設(shè)計)

    數(shù)字電路寄存器和 RAM 在上電之后默認(rèn)的狀態(tài)和數(shù)據(jù)是不確定的,如果有復(fù)位,我們可以把寄存器復(fù)位到初始狀態(tài),RAM 的數(shù)據(jù)可以通過復(fù)位來觸
    發(fā)表于 03-13 12:16 ?1143次閱讀
    電容<b class='flag-5'>在</b><b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b><b class='flag-5'>中</b>的作用(<b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>具體要怎么設(shè)計)

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

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