stm32 看門狗(HAL庫)
阿新 • • 發佈:2018-12-10
(一)概述
stm32有兩個看門狗:硬體看門狗(LSI 40KHz)和視窗看門狗(APB1)。
(二)硬體看門狗實現程式碼
IWDG_HandleTypeDef hiwdg; // 硬體看門狗初始化 static void MX_IWDG_Init(IWDG_HandleTypeDef *pHiwdg) { pHiwdg->Instance = IWDG; pHiwdg->Init.Prescaler = IWDG_PRESCALER_4; pHiwdg->Init.Reload = 0xFFF; // Tout = ((4 * 2^prer) * rlr) / 40 = 409ms,看門狗溢位時間 if (HAL_IWDG_Init(pHiwdg) != HAL_OK) { Error_Handler(); } } int main(void) { ........ MX_IWDG_Init(&hiwdg); ........ HAL_IWDG_Start(&hiwdg); while (1) { ........ HAL_IWDG_Refresh(&hiwdg); } }
(三)初始上電獲取硬體看門狗復位狀態
if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET)
{
}/* 硬體看門狗復位 */
__HAL_RCC_CLEAR_RESET_FLAGS();
(四)看門狗復位後IO狀態的保持方法
法一:硬體方式,鎖存器。
法二:軟體方式,當需要關注的IO狀態改變時,立馬存在Flash中,初始上電判斷復位型別是硬體看門狗,就進行Flash讀取和IO操作。該方式的缺點:由於stm32的Flash寫操作是頁寫,每次寫之前,都要先擦除,而且Flash的寫次數有限,故經常寫,Flash經常寫的區域有可能被寫壞。
法三:軟體方式,BKP+初始判斷處理。