標(biāo)題:
[零基礎(chǔ)學(xué)習(xí)STM32]第七講:WWDG看門狗實驗—復(fù)位ARM
[打印本頁]
作者:
kkhkbb
時間:
2018-3-12 16:03
標(biāo)題:
[零基礎(chǔ)學(xué)習(xí)STM32]第七講:WWDG看門狗實驗—復(fù)位ARM
本帖最后由 kkhkbb 于 2018-3-13 08:40 編輯
一、
概述
1、
WWDG
看門狗簡介
IWDG
看門狗存在這樣一個問題,如果在喂狗的間隔期間,程序跑飛后又正確歸位,獨立看門狗無法發(fā)現(xiàn)這樣的錯誤,程序?qū)⒋嬖诤艽蟮奈kU。與
IWDG
看門狗不同,
WWDG
看門狗需要在一個規(guī)定的時間范圍內(nèi)喂狗才有效,這樣可以較為有效的解決
IWDG
看門狗存在的問題?梢愿鶕(jù)
WWDG
看門狗通常被用來監(jiān)測由外部干擾或不可預(yù)見的邏輯條件造成的應(yīng)用程序背離正常的運(yùn)行序列而產(chǎn)生的軟件故障。
2、
WWDG
看門狗窗口說明
WWDG
看門狗在使用時,除了使能時鐘和設(shè)置預(yù)分頻值外,還需要設(shè)置窗口和計數(shù)器初值。在芯片內(nèi)部,
WWDG
看門狗計數(shù)器是一個
7
位二進(jìn)制遞減計數(shù)器,當(dāng)它從
0x40
翻轉(zhuǎn)到
0x3F
時,系統(tǒng)會啟動復(fù)位。只有計數(shù)器在窗口值和
0x40
之間的時候,喂狗才是有效的。如圖
7_0
所示:
圖
7_0 WWDG
工作原理圖
二、硬件電路
圖
7_1
按鍵引腳
圖
7_2
按鍵
在
iCore3
雙核心開發(fā)板中,采用一個獨立的按鍵與
STM32F407
的
PH15
相連,限流電阻為
1K
。
三、實驗原理
本次實驗使用的是常開帶復(fù)位按鍵,從硬件電路上可以看出,當(dāng)按鍵沒有按下時,
ARM
芯片的
ARM_KEY
引腳讀取到的值是高電平,按鍵按下后讀取到的值為低電平,按鍵沒有按下是正常喂狗,當(dāng)按鍵按下后停止喂狗。
四、主函數(shù)
1.
主函數(shù)
//--------------------------- Variable --------------------------//
unsigned long int time_delay = 0;
//--------------------- Function Prototype ----------------------//
static void delay(unsigned long int ms);
//--------------------------- Function --------------------------//
/*
* Name : main
* Description : ---
* Author : ysloveivy.
*
* History
* --------------------
* Rev : 0.00
* Date : 11/21/2015
*
* create.
* --------------------
*/
int main(void)
{
int i;
for(i = 0;i < 10000000;i++);
led.initialize();
key.initialize();
systick.initialize();
wwdg.initialize();
LED_RED_ON;
while(1){
while(!KEY_INPUT);
delay(30); //30ms喂狗
wwdg.feed_dog();
}
}
/*
* Name : delay
* Description : ---
* Author : ysloveivy.
*
* History
* --------------------
* Rev : 0.00
* Date : 11/21/2015
*
* create.
* --------------------
*/
static void delay(unsigned long int ms)
{
time_delay = ms;
while(time_delay != 0);
}
復(fù)制代碼
2.
WWDG
初始化及喂狗代碼
/*
* Name : initialize
* Description : ---
* Author : ysloveivy.
*
* History
* -------------------
* Rev : 0.00
* Date : 11/21/2015
*
* create.
* -------------------
*/
static int initialize(void)
{
//21.06ms 49.9ms之間喂狗
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); //使能窗口看門狗時鐘
WWDG_SetPrescaler(WWDG_Prescaler_8); //設(shè)置預(yù)分頻值
WWDG_SetWindowValue(100); //設(shè)置窗口值
WWDG_Enable(127); //設(shè)置計數(shù)器初值,并使能窗口看門狗
return 0;
}
/*
* Name : feed_dog
* Description : ---
* Author : ysloveivy.
*
* History
* -------------------
* Rev : 0.00
* Date : 11/21/2015
*
* create.
* -------------------
*/
static void feed_dog(void)
{
WWDG_SetCounter(127); //重置計數(shù)器,喂狗
}
復(fù)制代碼
3.
系統(tǒng)滴答定時器中斷
/*
* Name : SysTick_Handler
* Description : ---
* Author : ysloveivy.
*
* History
* -------------------
* Rev : 0.00
* Date : 11/21/2015
*
* create.
* -------------------
*/
void SysTick_Handler(void)
{
static int counter = 0;
if((counter ++ % 1000) == 0){
systick.second_flag = 1;
}
time_delay --;
}
復(fù)制代碼
五、實驗現(xiàn)象
iCore3
雙核心板紅色
LED
常亮,當(dāng)按鍵一直按下,看門狗一直復(fù)位
ARM
,紅燈閃爍。
六、代碼包下載
網(wǎng)盤:
http://pan.baidu.com/s/1qWEK7fQ
iCore3_7_WWDG.rar
2018-3-12 18:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
909.11 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1