新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32軟件復位(基于庫文件V3.5)

        STM32軟件復位(基于庫文件V3.5)

        作者: 時間:2013-03-25 來源:網絡 收藏

        ()

        本文引用地址:http://www.104case.com/article/148069.htm

        void SoftReset(void)

        {

        __set_FAULTMASK(1); // 關閉所有中端

        NVIC_SystemReset();//

        }

        在官方庫的 core_cm3.h 里 直接提供了 系統的函數

        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 */

        }

        但是不是直接調用這個函數就OK了?

        在Cortex-M3權威指南中有這么一句話

        這里有一個要注意的問題:從SYSRESETREQ 被置為有效,到復位發生器執行復位命令,

        往往會有一個延時。在此延時期間,處理器仍然可以響應中斷請求。但我們的本意往往是要

        讓此次執行到此為止,不要再做任何其它事情了。所以,最好在發出復位請求前,先把

        FAULTMASK 置位。

        所以最好在將FAULTMASK 置位才萬無一失。

        同樣官方 core_cm3.h 里也直接提供了該函數

        static __INLINE void __set_FAULTMASK(uint32_t faultMask)

        {

        register uint32_t __regFaultMask __ASM(faultmask);

        __regFaultMask = (faultMask 1);

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新余市| 林甸县| 郸城县| 桂平市| 敦化市| 夏津县| 定兴县| 繁昌县| 广安市| 科技| 塘沽区| 获嘉县| 叙永县| 岳池县| 鄯善县| 宁安市| 樟树市| 长宁区| 丹阳市| 湘西| 米林县| 双柏县| 凭祥市| 原阳县| 灌云县| 伊通| 平江县| 阜新| 南昌市| 鞍山市| 通许县| 景东| 凌源市| 韶山市| 宾川县| 屯门区| 凌海市| 亳州市| 垦利县| 固始县| 竹山县|