偷偷碰在线视频天天|性高湖久久久久久久久aaaaa|美女拍拍拍免费视频网站|日韩高清dvd|97夜夜澡人人爽人人喊一欧美

當前位置: 上海銘靜電子科技有限公司 » 單片機

STM32 關于復位類型的判斷及軟件復位

分類:單片機 發布:2018年05月19日 23:02 瀏覽:942次 Tag:

要想查看復位情況可以使用:
//******************************************************************************
// 函數名稱: RCC_GetFlagStatus
// 功能描述: 檢查指定的RCC標志設置與否.
// 輸入參數: RCC_FLAG:要檢查的標志.
//                    這個參數可以是下面的值之一:
//                       - RCC_FLAG_HSIRDY: HIS振蕩時鐘就緒
//                       - RCC_FLAG_HSERDY: HSE振蕩時鐘就緒
//                       - RCC_FLAG_PLLRDY: PLL時鐘就緒
//                       - RCC_FLAG_LSERDY: LSE振蕩時鐘就緒
//                       - RCC_FLAG_LSIRDY: LSI振蕩時鐘就緒
//                       - RCC_FLAG_PINRST: 引腳復位
//                       - RCC_FLAG_PORRST: POR/PDR復位
//                       - RCC_FLAG_SFTRST: 軟件復位
//                       - RCC_FLAG_IWDGRST: 獨立看門狗復位
//                       - RCC_FLAG_WWDGRST: 窗口看門狗復位
//                      - RCC_FLAG_LPWRRST: 低電量復位
// 輸出參數: 無
// 返回參數: RCC_FLAG的新狀態(SET或RESET).


FlagStatus RCC_GetFlagStatus(u8 RCC_FLAG)來查看!

而要想軟件產生一個復位如下:
在官方軟件庫的stm32f10x_nvic.c 文件里 直接提供了 系統復位的函數
 
//*******************************************************************************
* 函數名稱: NVIC_GenerateSystemReset
* 功能描述: 生成一個系統復位.
* 輸入參數: 無
* 輸出參數: 無
* 返回參數: 無
*******************************************************************************/
void NVIC_GenerateSystemReset(void)
{
  SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;
}
 
 
在Cortex-M3權威指南中有一個要注意的問題:從SYSRESETREQ 被置為有效,到復位發生器執行復位命令,往往會有一個延時。在此延時期間,處理器仍然可以響應中斷請求。但我們的本意往往是要讓此次執行到此為止,不要再做任何其它事情了。所以,最好在發出復位請求前,先把FAULTMASK 置位。stm32f10x_nvic.c 文件里也直接提供了該函數
 
/*******************************************************************************
* 函數名稱: NVIC_SETFAULTMASK
* 功能描述: 使能FAULTMASK優先級:把執行的優先級提升為-1.
* 輸入參數: 無
* 輸出參數: 無
* 返回參數: 無
*******************************************************************************/
void NVIC_SETFAULTMASK(void)
{
  __SETFAULTMASK();
}
 
所以要系統復位 只要 調用這個函數就行了
void SystemReset(void )
{
  NVIC_SETFAULTMASK();
  NVIC_GenerateSystemReset();
}


相關文章
 
資訊欄目
最新資訊
資訊排行
 

收縮
  • 電話咨詢

  • 021-31007558