新聞中心

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

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 衡南县| 全南县| 九龙坡区| 双峰县| 成安县| 枞阳县| 顺义区| 南阳市| 科技| 门源| 靖宇县| 措美县| 沾益县| 股票| 社会| 兴仁县| 青神县| 峨眉山市| 瑞安市| 清远市| 民乐县| 缙云县| 吴堡县| 吉安县| 淮阳县| 襄汾县| 宽城| 五台县| 马公市| 时尚| 巴中市| 孝感市| 云和县| 永仁县| 仁寿县| 平和县| 龙口市| 曲水县| 平山县| 竹溪县| 蓬莱市|