精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

關于STM32復位的那些事

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

1. 硬件復位

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

圖片

2. 軟件復位

軟件復位庫函數:

NVIC_SystemReset();

STM32F1XX系列中,復位函數在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系列中,復位函數在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庫中又進行了封裝,在stm32f4xx_hal_cortex.c中,調用上面和下面兩個函數效果是一樣的。

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

禁止可屏蔽中斷庫函數:

__set_FAULTMASK(1);

參考網上一些博主說的,在調用復位函數和真正復位之間還有一段延遲,在這段時間單片機還是可以正常處理中斷等程序的,為了避免這種情況,應該把相應的中斷都屏蔽掉,這里會用到下面這個中斷屏蔽相關的函數;

可以注意到這些函數名在M3和M4中都是一樣的,M3中函數的定義在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的權威指南中可以看到這個寄存器的功能就是禁止所有的 可屏蔽中斷 ,如下:

圖片

總結

所以一般如果需要軟復位只要調用上面兩個庫函數即可:

/*
 *函數功能:STM32軟復位函數
 */
 void Stm32_SoftReset(void)
 {
   __set_FAULTMASK(1);//禁止所有的可屏蔽中斷
   NVIC_SystemReset();//軟件復位
 }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2266

    文章

    10871

    瀏覽量

    354796
  • 中斷處理
    +關注

    關注

    0

    文章

    94

    瀏覽量

    10958
  • 復位電路
    +關注

    關注

    13

    文章

    322

    瀏覽量

    44536
  • stm32f1
    +關注

    關注

    1

    文章

    56

    瀏覽量

    12184
  • HAL庫
    +關注

    關注

    1

    文章

    114

    瀏覽量

    6174
收藏 人收藏

    評論

    相關推薦

    關于GPS定位的那些不看肯定后悔

    關于GPS定位的那些不看肯定后悔
    發表于 09-26 07:11

    深入了解電路噪聲的那些

    模擬電子的相關知識學習教材資料——深入了解電路噪聲的那些
    發表于 09-27 15:19 ?0次下載

    關于 STM32 時鐘配置的那些

    關于STM32時鐘配置的那些
    的頭像 發表于 03-08 12:06 ?5841次閱讀

    stm32復位電路工作原理

    stm32復位電路工作原理 相信大家對復位電路已經很熟悉了,復位電路是一種用來使電路恢復到起始狀態的電路設備,這次我們來討論一下stm32
    的頭像 發表于 08-07 11:59 ?3.8w次閱讀

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

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

    STM32復位來源、以及系統和內核復位區別

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

    淺析stm32復位電路方法

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

    stm32復位電路設計

    stm32復位電路設計
    發表于 06-26 09:26 ?8次下載

    STM32芯片的那些系統級復位功能

    我們知道,STM32芯片里有很多系統級的復位,比方上電復位、欠壓復位、看門狗復位、軟件復位、
    的頭像 發表于 10-19 09:06 ?5091次閱讀

    談談復位那些

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

    stm32復位電路如何設計

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

    stm32復位 內核復位和系統復位

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

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

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

    STM32復位電路用復位芯片和阻容復位電路區別

    STM32是一款廣泛使用的微控制器,其復位電路設計對于系統的穩定性和可靠性至關重要。本文將詳細介紹STM32復位電路中使用復位芯片和阻容
    的頭像 發表于 08-06 10:26 ?1143次閱讀

    京準時鐘科普:關于北斗衛星同步時鐘的那些?

    京準時鐘科普:關于北斗衛星同步時鐘的那些
    的頭像 發表于 10-29 09:28 ?221次閱讀
    京準時鐘科普:<b class='flag-5'>關于</b>北斗衛星同步時鐘的<b class='flag-5'>那些</b><b class='flag-5'>事</b>?