新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM8L探索套件學(xué)習(xí)筆記-獨立看門狗IWDG(十六)

STM8L探索套件學(xué)習(xí)筆記-獨立看門狗IWDG(十六)

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
STM8L獨立看門狗由內(nèi)部專門的 38Khz 低速時鐘驅(qū)動,即使主時鐘發(fā)生故障,它也仍然有效。這里需要注意獨立看門狗的時鐘并不是準(zhǔn)確的 38Khz,只是我們在估算的時候,以 38Khz 的頻率來計算,看門狗對時間的要求不是很精確,所以,時鐘有些偏差,都是可以接受的。根據(jù)分頻系統(tǒng)和看門狗計數(shù)值可以設(shè)置獨立看門狗的復(fù)位時間,范圍從0.1ms~1724.63ms
例程展示如何重載IWDG計數(shù)值,IWDG的時間設(shè)置為214.7ms。程序采用“Refresh”變量來使能IWDG重載計數(shù)值仿真IWDG復(fù)位,并且板上LED4翻轉(zhuǎn)。當(dāng)按鍵按下,模擬一次軟件錯誤造成程序沒有喂狗,從而發(fā)生復(fù)位。如果IWDG復(fù)位,系統(tǒng)啟動后LED3會翻轉(zhuǎn)8次,主代碼如下:
void main(void)
{
uint8_t Index;
GPIO_Init(LED3_PORT,LED3_PIN,GPIO_Mode_Out_PP_Low_Fast);
//輸出低電平-高速10M
GPIO_Init(LED4_PORT,LED4_PIN,GPIO_Mode_Out_PP_Low_Fast);
//輸出低電平-高速10M
GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_IT);
//輸入浮空-中斷
/* Set PC1 sensitivity to falling edge and low level 下降沿低電平觸發(fā)*/
EXTI_SetPinSensitivity(EXTI_Pin_1, EXTI_Trigger_Falling_Low);
/* Check if the MCU has resumed from IWDG reset */
if (RST_GetFlagStatus(RST_FLAG_IWDGF) != RESET)
{
/* IWDGF flag set */
/* Toggle LED3 */
for (Index = 7; Index != 0; Index--)
{
GPIO_ToggleBits(LED3_PORT,LED3_PIN);
Delay(0x7FFF);
}
/* Clear IWDGF Flag */
RST_ClearFlag(RST_FLAG_IWDGF);
}
/* IWDG configuration: IWDG is clocked by LSI = 38KHz */
/* IWDG timeout equal to 214.7 ms (the timeout may varies due to LSI frequency dispersion) */
/* IWDG timeout = (RELOAD_VALUE + 1) * Prescaler / LSI = (254 + 1) * 32 / 38 000 = 214.7 ms */
/* Enable the IWDG */
IWDG_Enable();
/* Enable write access to IWDG_PR and IWDG_RLR registers */
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
/* Set IWDG timeout */
IWDG_SetPrescaler(IWDG_Prescaler_32);
IWDG_SetReload(RELOAD_VALUE);
/* Refresh IWDG */
IWDG_ReloadCounter();
/* enable interrupts by switching to level 0 */
enableInterrupts();
while (1)
{
/* As Refresh is equal to ENABLE no IWDG reset will occur. When Refresh is
equal to DISABLE, the IWDG counter isnt refreshed and IWDG reset will occur. */
if (Refresh != 0)
{
/* Reload IWDG counter */
IWDG_ReloadCounter();
}
/* Toggle LED4 */
GPIO_ToggleBits(LED4_PORT,LED4_PIN);
Delay(0x6FFF);
}
}


評論


技術(shù)專區(qū)

關(guān)閉