<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32之獨立看門(mén)狗

STM32之獨立看門(mén)狗

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏
實(shí)驗現象:

開(kāi)始LED1亮,LED2熄滅,若不隔時(shí)間按KEY1則發(fā)現LED2因獨立看門(mén)狗的作用使系統復位而不斷閃爍,若間斷的按KEY1則發(fā)現LED2不會(huì )閃爍,表明沒(méi)有復位。

本文引用地址:http://dyxdggzs.com/article/201611/322764.htm

實(shí)驗平臺:

基于STM32F103C8T6的彩屏開(kāi)發(fā)板

操作步驟:

1)向IWDG_KR 寫(xiě)入0X5555。
通過(guò)這步,我們取消IWDG_PR 和IWDG_RLR 的寫(xiě)保護,使后面可以操作這兩個(gè)寄存器。
設置 IWDG_PR 和IWDG_RLR 的值。
這兩步設置看門(mén)狗的分頻系數,和重裝載的值。由此,就可以知道看門(mén)狗的喂狗時(shí)間(也
就是看門(mén)狗溢出時(shí)間),該時(shí)間的計算方式為:
Tout=((4×2^prer) ×rlr) /40
其中Tout 為看門(mén)狗溢出時(shí)間(單位為ms);prer 為看門(mén)狗時(shí)鐘預分頻值(IWDG_PR 值),
范圍為0~7;rlr 為看門(mén)狗的重裝載值(IWDG_RLR 的值);
比如我們設定 prer 值為4,rlr 值為625,那么就可以得到Tout=64×625/40=1000ms,這樣,
看門(mén)狗的溢出時(shí)間就是1s,只要你在一秒鐘之內,有一次寫(xiě)入0XAAAA 到IWDG_KR,就不會(huì )導致看門(mén)狗復位(當然寫(xiě)入多次也是可以的)。這里需要提醒大家的是,看門(mén)狗的時(shí)鐘不是準
確的40Khz,所以在喂狗的時(shí)候,最好不要太晚了,否則,有可能發(fā)生看門(mén)狗復位。

2)向IWDG_KR 寫(xiě)入0XAAAA。
通過(guò)這句,將使STM32 重新加載IWDG_RLR 的值到看門(mén)狗計數器里面。也可以用該命令
來(lái)喂狗。
3)向IWDG_KR 寫(xiě)入0XCCCC。
通過(guò)這句,來(lái)啟動(dòng) STM32 的看門(mén)狗。注意IWDG 在一旦啟用,就不能再被關(guān)閉!想要關(guān)
閉,只能重啟,并且重啟之后不能打開(kāi)IWDG,否則問(wèn)題依舊,所以在這里提醒大家,如果不
用IWDG 的話(huà),就不要去打開(kāi)它,免得麻煩。
通過(guò)上面 3 個(gè)步驟,我們就可以啟動(dòng)STM32 的看門(mén)狗了,使能了看門(mén)狗,在程序里面就
必須間隔一定時(shí)間喂狗,否則將導致程序復位。利用這一點(diǎn),我們通過(guò)一個(gè)LED 燈來(lái)指
示程序是否重啟,來(lái)驗證STM32 的獨立看門(mén)狗。

程序部分代碼:

watchdong.h

#ifndef WATCHDOG_H
#define WATCHDOG_H
void WatchDog_Init(u8, u16);//申明看門(mén)狗的初始化函數
void WatchDog_Feed(void);//申明喂狗的函數
#endif

watchdong.c

#include"common.h"
#include"watchdog.h"
//看門(mén)狗初始化,參數:prer-分頻,reld-計數器重裝載值
void WatchDog_Init(u8 prer, u16 reld)
{
IWDG->KR=0x5555; //允許訪(fǎng)問(wèn)PR和RLR寄存器
IWDG->PR=prer;//設置分頻
IWDG->RLR=reld; //設定計數器初值
IWDG->KR=0xaaaa;//初次裝初值
IWDG->KR=0xcccc;//啟動(dòng)看門(mén)狗定時(shí)器
}

//喂狗
void WatchDog_Feed(void)
{
IWDG->KR=0xaaaa;
}
該代碼就2 個(gè)函數,void IWDG_Init(u8 prer,u16 rlr)是獨立看門(mén)狗初始化函數,就是按照
上面介紹的步驟來(lái)初始化獨立看門(mén)狗的。該函數有2 個(gè)參數,分別用來(lái)設置與預分頻數與重裝
寄存器的值的。通過(guò)這兩個(gè)參數,就可以大概知道看門(mén)狗復位的時(shí)間周期為多少了。其計算方
式上面有詳細的介紹,這里不再多說(shuō)了。
void IWDG_Feed(void)函數,該函數用來(lái)喂狗,因為STM32 的喂狗只需要向鍵值寄存器寫(xiě)
入0XAAAA 即可,

主函數
#include
#include"common.h"
#include"led.h"
#include"key.h"
#include"watchdog.h"
int main(void)
{
u8 temp2;
Stm32_Clock_Init(9);//系統時(shí)鐘設置
delay_init(72);//延時(shí)初始化
LED_Init();//LED初始化
KEY_Init();
WatchDog_Init(4,625);//看門(mén)狗初始化
LED1=1;
LED2=0;
while(1)
{
temp2=KEY_Scan(); //讀取按鍵值
if(temp2==1)
WatchDog_Feed();//喂狗

}
}



關(guān)鍵詞: STM32獨立看門(mén)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>