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

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

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

關(guān)于STM32復(fù)位的那些事

冬至子 ? 來源:阿偉玩電子 ? 作者:Aweil ? 2023-11-24 15:23 ? 次閱讀

1. 硬件復(fù)位

硬件復(fù)位電路如下圖,直接將RESET引腳拉低即可,如下:

圖片

2. 軟件復(fù)位

軟件復(fù)位庫函數(shù):

NVIC_SystemReset();

STM32F1XX系列中,復(fù)位函數(shù)在core_cm3.h文件中:

/**
 * @brief  Initiate a system reset request.
 *
 * Initiate a system reset request to reset the MCU
 */static __INLINE void NVIC_SystemReset(void){
  SCB- >AIRCR  = ((0x5FA < < SCB_AIRCR_VECTKEY_Pos)      | 
                 (SCB- >AIRCR & SCB_AIRCR_PRIGROUP_Msk) | 
                 SCB_AIRCR_SYSRESETREQ_Msk);                   /* Keep priority group unchanged */
  __DSB();                                                     /* Ensure completion of memory access */              
  while(1);                                                    /* wait until reset */}

STM32F4XX系列中,復(fù)位函數(shù)在core_cm4.h文件中:

/**
  brief   System Reset
  details Initiates a system reset request to reset the MCU.
 */__STATIC_INLINE void NVIC_SystemReset(void){
  __DSB();                                                          /* Ensure all outstanding memory accesses included
                                                                       buffered write are completed before reset */
  SCB- >AIRCR  = (uint32_t)((0x5FAUL < < SCB_AIRCR_VECTKEY_Pos)    |
                           (SCB- >AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
                            SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */
  __DSB();                                                          /* Ensure completion of memory access */

  for(;;)                                                           /* wait until reset */
  {
    __NOP();
  }}

在HAL庫中又進(jìn)行了封裝,在stm32f4xx_hal_cortex.c中,調(diào)用上面和下面兩個(gè)函數(shù)效果是一樣的。

/**
  * @brief  Initiates a system reset request to reset the MCU.
  * @retval None
  */void HAL_NVIC_SystemReset(void){
  /* System Reset */
  NVIC_SystemReset();}

禁止可屏蔽中斷庫函數(shù):

__set_FAULTMASK(1);

參考網(wǎng)上一些博主說的,在調(diào)用復(fù)位函數(shù)和真正復(fù)位之間還有一段延遲,在這段時(shí)間單片機(jī)還是可以正常處理中斷等程序的,為了避免這種情況,應(yīng)該把相應(yīng)的中斷都屏蔽掉,這里會(huì)用到下面這個(gè)中斷屏蔽相關(guān)的函數(shù);

可以注意到這些函數(shù)名在M3和M4中都是一樣的,M3中函數(shù)的定義在core_cm3.h中,如下:

/**
 * @brief  Set the Fault Mask value
 *
 * @param  faultMask  faultMask value
 *
 * Set the fault mask register
 */static __INLINE void __set_FAULTMASK(uint32_t faultMask){
  register uint32_t __regFaultMask       __ASM("faultmask");
  __regFaultMask = (faultMask & 1);}

在M3的權(quán)威指南中可以看到這個(gè)寄存器的功能就是禁止所有的 可屏蔽中斷 ,如下:

圖片

總結(jié)

所以一般如果需要軟復(fù)位只要調(diào)用上面兩個(gè)庫函數(shù)即可:

/*
 *函數(shù)功能:STM32軟復(fù)位函數(shù)
 */
 void Stm32_SoftReset(void)
 {
   __set_FAULTMASK(1);//禁止所有的可屏蔽中斷
   NVIC_SystemReset();//軟件復(fù)位
 }
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356003
  • 中斷處理
    +關(guān)注

    關(guān)注

    0

    文章

    94

    瀏覽量

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

    關(guān)注

    13

    文章

    322

    瀏覽量

    44594
  • stm32f1
    +關(guān)注

    關(guān)注

    1

    文章

    56

    瀏覽量

    12206
  • HAL庫
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

    6235
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于GPS定位的那些不看肯定后悔

    關(guān)于GPS定位的那些不看肯定后悔
    發(fā)表于 09-26 07:11

    深入了解電路噪聲的那些

    模擬電子的相關(guān)知識(shí)學(xué)習(xí)教材資料——深入了解電路噪聲的那些
    發(fā)表于 09-27 15:19 ?0次下載

    關(guān)于 STM32 時(shí)鐘配置的那些

    關(guān)于STM32時(shí)鐘配置的那些
    的頭像 發(fā)表于 03-08 12:06 ?5925次閱讀

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

    stm32復(fù)位電路工作原理 相信大家對(duì)復(fù)位電路已經(jīng)很熟悉了,復(fù)位電路是一種用來使電路恢復(fù)到起始狀態(tài)的電路設(shè)備,這次我們來討論一下stm32
    的頭像 發(fā)表于 08-07 11:59 ?3.8w次閱讀

    舵機(jī)控制那些(附STM32代碼?。。。?/a>

    舵機(jī)控制那些(附STM32代碼?。。。?/div>
    發(fā)表于 12-08 18:51 ?49次下載
    舵機(jī)控制<b class='flag-5'>那些</b><b class='flag-5'>事</b>(附<b class='flag-5'>STM32</b>代碼!?。。? />    </a>
</div>                            <div   id=

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

    每一塊STM32中都有這么一個(gè)RCC復(fù)位和時(shí)鐘控制模塊。STM32復(fù)位為三類:系統(tǒng)復(fù)位、電源復(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ù)位,我們都不會(huì)陌生,系統(tǒng)基本都有一個(gè)復(fù)位按鍵。復(fù)位的種類有很多:上電復(fù)位、掉電復(fù)位復(fù)位
    發(fā)表于 02-11 15:10 ?45次下載
    淺析<b class='flag-5'>stm32</b><b class='flag-5'>復(fù)位</b>電路方法

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

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

    STM32芯片的那些系統(tǒng)級(jí)復(fù)位功能

    我們知道,STM32芯片里有很多系統(tǒng)級(jí)的復(fù)位,比方上電復(fù)位、欠壓復(fù)位、看門狗復(fù)位、軟件復(fù)位、
    的頭像 發(fā)表于 10-19 09:06 ?5246次閱讀

    談?wù)?b class='flag-5'>復(fù)位那些

    復(fù)位信號(hào)幾乎是除了時(shí)鐘信號(hào)外最常用的信號(hào)了,幾乎所有數(shù)字系統(tǒng)在上電的時(shí)候都會(huì)進(jìn)行復(fù)位,這樣才能保持設(shè)計(jì)者確定該系統(tǒng)的系統(tǒng)模式的狀態(tài),以便于更好的進(jìn)行電子設(shè)計(jì),并且在任意時(shí)刻,確保使用者總能對(duì)電路系統(tǒng)進(jìn)行復(fù)位,使電路從初始的狀態(tài)開
    的頭像 發(fā)表于 06-02 15:11 ?1992次閱讀
    談?wù)?b class='flag-5'>復(fù)位</b><b class='flag-5'>那些</b><b class='flag-5'>事</b>

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

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

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

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

    關(guān)于MLCC(多層陶瓷電容)替代Film Cap (薄膜電容)的那些

    關(guān)于MLCC(多層陶瓷電容)替代Film Cap (薄膜電容)的那些
    的頭像 發(fā)表于 12-04 17:35 ?2117次閱讀
    有<b class='flag-5'>關(guān)于</b>MLCC(多層陶瓷電容)替代Film Cap (薄膜電容)的<b class='flag-5'>那些</b><b class='flag-5'>事</b>

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

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

    京準(zhǔn)時(shí)鐘科普:關(guān)于北斗衛(wèi)星同步時(shí)鐘的那些?

    京準(zhǔn)時(shí)鐘科普:關(guān)于北斗衛(wèi)星同步時(shí)鐘的那些?
    的頭像 發(fā)表于 10-29 09:28 ?293次閱讀
    京準(zhǔn)時(shí)鐘科普:<b class='flag-5'>關(guān)于</b>北斗衛(wèi)星同步時(shí)鐘的<b class='flag-5'>那些</b><b class='flag-5'>事</b>?