欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
[零基礎學習STM32]第七講:WWDG看門狗實驗—復位ARM
[打印本頁]
作者:
kkhkbb
時間:
2018-3-12 16:03
標題:
[零基礎學習STM32]第七講:WWDG看門狗實驗—復位ARM
本帖最后由 kkhkbb 于 2018-3-13 08:40 編輯
一、
概述
1、
WWDG
看門狗簡介
IWDG
看門狗存在這樣一個問題,如果在喂狗的間隔期間,程序跑飛后又正確歸位,獨立看門狗無法發現這樣的錯誤,程序將存在很大的危險。與
IWDG
看門狗不同,
WWDG
看門狗需要在一個規定的時間范圍內喂狗才有效,這樣可以較為有效的解決
IWDG
看門狗存在的問題。可以根據
WWDG
看門狗通常被用來監測由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運行序列而產生的軟件故障。
2、
WWDG
看門狗窗口說明
WWDG
看門狗在使用時,除了使能時鐘和設置預分頻值外,還需要設置窗口和計數器初值。在芯片內部,
WWDG
看門狗計數器是一個
7
位二進制遞減計數器,當它從
0x40
翻轉到
0x3F
時,系統會啟動復位。只有計數器在窗口值和
0x40
之間的時候,喂狗才是有效的。如圖
7_0
所示:
圖
7_0 WWDG
工作原理圖
二、硬件電路
圖
7_1
按鍵引腳
圖
7_2
按鍵
在
iCore3
雙核心開發板中,采用一個獨立的按鍵與
STM32F407
的
PH15
相連,限流電阻為
1K
。
三、實驗原理
本次實驗使用的是常開帶復位按鍵,從硬件電路上可以看出,當按鍵沒有按下時,
ARM
芯片的
ARM_KEY
引腳讀取到的值是高電平,按鍵按下后讀取到的值為低電平,按鍵沒有按下是正常喂狗,當按鍵按下后停止喂狗。
四、主函數
1.
主函數
//--------------------------- 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);
}
復制代碼
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); //設置預分頻值
WWDG_SetWindowValue(100); //設置窗口值
WWDG_Enable(127); //設置計數器初值,并使能窗口看門狗
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); //重置計數器,喂狗
}
復制代碼
3.
系統滴答定時器中斷
/*
* 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 --;
}
復制代碼
五、實驗現象
iCore3
雙核心板紅色
LED
常亮,當按鍵一直按下,看門狗一直復位
ARM
,紅燈閃爍。
六、代碼包下載
網盤:
http://pan.baidu.com/s/1qWEK7fQ
iCore3_7_WWDG.rar
2018-3-12 18:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
909.11 KB, 下載次數: 10, 下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1