久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
STM32之獨(dú)立看門狗
[打印本頁]
作者:
51黑tt
時間:
2016-3-4 20:18
標(biāo)題:
STM32之獨(dú)立看門狗
實驗現(xiàn)象:
開始LED1亮,LED2熄滅,若不隔時間按KEY1則發(fā)現(xiàn)LED2因獨(dú)立看門狗的作用使系統(tǒng)復(fù)位而不斷閃爍,若間斷的按KEY1則發(fā)現(xiàn)LED2不會閃爍,表明沒有復(fù)位。
實驗平臺:
基于STM32F103C8T6的彩屏開發(fā)板
操作步驟:
1)向IWDG_KR 寫入0X5555。
通過這步,我們?nèi)∠鸌WDG_PR 和IWDG_RLR 的寫保護(hù),使后面可以操作這兩個寄存器。
設(shè)置 IWDG_PR 和IWDG_RLR 的值。
這兩步設(shè)置看門狗的分頻系數(shù),和重裝載的值。由此,就可以知道看門狗的喂狗時間(也
就是看門狗溢出時間),該時間的計算方式為:
Tout=((4×2^prer) ×rlr) /40
其中Tout 為看門狗溢出時間(單位為ms);prer 為看門狗時鐘預(yù)分頻值(IWDG_PR 值),
范圍為0~7;rlr 為看門狗的重裝載值(IWDG_RLR 的值);
比如我們設(shè)定 prer 值為4,rlr 值為625,那么就可以得到Tout=64×625/40=1000ms,這樣,
看門狗的溢出時間就是1s,只要你在一秒鐘之內(nèi),有一次寫入0XAAAA到IWDG_KR,就不會導(dǎo)致看門狗復(fù)位(當(dāng)然寫入多次也是可以的)。這里需要提醒大家的是,看門狗的時鐘不是準(zhǔn)
確的40Khz,所以在喂狗的時候,最好不要太晚了,否則,有可能發(fā)生看門狗復(fù)位。
2)向IWDG_KR 寫入0XAAAA。
通過這句,將使STM32 重新加載IWDG_RLR 的值到看門狗計數(shù)器里面。也可以用該命令
來喂狗。
3)向IWDG_KR 寫入0XCCCC。
通過這句,來啟動 STM32 的看門狗。注意IWDG 在一旦啟用,就不能再被關(guān)閉!想要關(guān)
閉,只能重啟,并且重啟之后不能打開IWDG,否則問題依舊,所以在這里提醒大家,如果不
用IWDG 的話,就不要去打開它,免得麻煩。
通過上面 3 個步驟,我們就可以啟動STM32 的看門狗了,使能了看門狗,在程序里面就
必須間隔一定時間喂狗,否則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),我們通過一個LED 燈來指
示程序是否重啟,來驗證STM32 的獨(dú)立看門狗。
程序部分代碼:
watchdong.h
#ifndef WATCHDOG_H
#define WATCHDOG_H
void WatchDog_Init(u8, u16);//申明看門狗的初始化函數(shù)
void WatchDog_Feed(void);//申明喂狗的函數(shù)
#endif
watchdong.c
#include"common.h"
#include"watchdog.h"
//看門狗初始化,參數(shù):prer-分頻,reld-計數(shù)器重裝載值
void WatchDog_Init(u8 prer, u16 reld)
{
IWDG->KR=0x5555; //允許訪問PR和RLR寄存器
IWDG->PR=prer; //設(shè)置分頻
IWDG->RLR=reld;//設(shè)定計數(shù)器初值
IWDG->KR=0xaaaa; //初次裝初值
IWDG->KR=0xcccc; //啟動看門狗定時器
}
//喂狗
void WatchDog_Feed(void)
{
IWDG->KR=0xaaaa;
}
該代碼就2 個函數(shù),void IWDG_Init(u8 prer,u16 rlr)是獨(dú)立看門狗初始化函數(shù),就是按照
上面介紹的步驟來初始化獨(dú)立看門狗的。該函數(shù)有2 個參數(shù),分別用來設(shè)置與預(yù)分頻數(shù)與重裝
寄存器的值的。通過這兩個參數(shù),就可以大概知道看門狗復(fù)位的時間周期為多少了。其計算方
式上面有詳細(xì)的介紹,這里不再多說了。
void IWDG_Feed(void)函數(shù),該函數(shù)用來喂狗,因為STM32 的喂狗只需要向鍵值寄存器寫
入0XAAAA 即可,
主函數(shù)
#include<stm32f10x_lib.h>
#include"common.h"
#include"led.h"
#include"key.h"
#include"watchdog.h"
int main(void)
{
u8 temp2;
Stm32_Clock_Init(9); //系統(tǒng)時鐘設(shè)置
delay_init(72); //延時初始化
LED_Init(); //LED初始化
KEY_Init();
WatchDog_Init(4,625); //看門狗初始化
LED1=1;
LED2=0;
while(1)
{
temp2=KEY_Scan();//讀取按鍵值
if(temp2==1)
WatchDog_Feed(); //喂狗
}
}
作者:
51heyforum
時間:
2018-1-4 17:05
謝謝樓主
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
黄视频免费在线观看
|
激情五月综合网
|
欧美精品一区二区三区四区
|
懂色av一区二区夜夜嗨
|
麻豆av网
|
午夜影院黄
|
国产主播99
|
成人免费毛片嘿嘿连载视频
|
久久都是精品
|
日韩中文字幕在线
|
国产一区二区自拍
|
av一区二区三区
|
999成人网
|
国产成人免费视频
|
国产一区二区三区在线视频
|
日韩在线观看中文字幕
|
亚洲一区二区免费视频
|
日韩在线免费播放
|
国产又粗又大又硬
|
性久久久久久
|
成人在线网址
|
91av在线看
|
欧美精品二区三区四区免费看视频
|
久久久久久毛片
|
中文字幕日韩一区
|
亚洲精品一区二区三区在线
|
成人免费网站黄
|
99在线免费观看视频
|
国产日韩欧美一区二区
|
国产成人精品一区二区
|
免费不卡视频
|
91网站免费观看
|
国产精品成人国产乱一区
|
狠狠干综合网
|
免费高清av
|
91在线视频播放
|
国产在线天堂
|
免费观看的黄色网址
|
欧美黄色免费
|
亚洲欧美视频在线
|
在线精品一区
|