新聞中心

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

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

作者: 時間:2013-03-25 來源:網(wǎng)絡 收藏

()

本文引用地址:http://www.butianyuan.cn/article/148069.htm

void SoftReset(void)

{

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

NVIC_SystemReset();//

}

在官方庫的 core_cm3.h 里 直接提供了 系統(tǒng)的函數(shù)

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

}

但是不是直接調(diào)用這個函數(shù)就OK了?

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

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

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

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

FAULTMASK 置位。

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

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

static __INLINE void __set_FAULTMASK(uint32_t faultMask)

{

register uint32_t __regFaultMask __ASM(faultmask);

__regFaultMask = (faultMask 1);

}



評論


相關推薦

技術專區(qū)

關閉