久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3248|回復: 1
打印 上一主題 下一主題
收起左側

STM32之獨立看門狗

[復制鏈接]
跳轉到指定樓層
樓主
ID:107189 發表于 2016-3-4 20:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗現象:
開始LED1亮,LED2熄滅,若不隔時間按KEY1則發現LED2因獨立看門狗的作用使系統復位而不斷閃爍,若間斷的按KEY1則發現LED2不會閃爍,表明沒有復位。

實驗平臺:
基于STM32F103C8T6的彩屏開發板

操作步驟:
1)向IWDG_KR 寫入0X5555。
通過這步,我們取消IWDG_PR 和IWDG_RLR 的寫保護,使后面可以操作這兩個寄存器。
設置 IWDG_PR 和IWDG_RLR 的值。
這兩步設置看門狗的分頻系數,和重裝載的值。由此,就可以知道看門狗的喂狗時間(也
就是看門狗溢出時間),該時間的計算方式為:
Tout=((4×2^prer) ×rlr) /40
其中Tout 為看門狗溢出時間(單位為ms);prer 為看門狗時鐘預分頻值(IWDG_PR 值),
范圍為0~7;rlr 為看門狗的重裝載值(IWDG_RLR 的值);
比如我們設定 prer 值為4,rlr 值為625,那么就可以得到Tout=64×625/40=1000ms,這樣,
看門狗的溢出時間就是1s,只要你在一秒鐘之內,有一次寫入0XAAAA到IWDG_KR,就不會導致看門狗復位(當然寫入多次也是可以的)。這里需要提醒大家的是,看門狗的時鐘不是準
確的40Khz,所以在喂狗的時候,最好不要太晚了,否則,有可能發生看門狗復位。
2)向IWDG_KR 寫入0XAAAA。
通過這句,將使STM32 重新加載IWDG_RLR 的值到看門狗計數器里面。也可以用該命令
來喂狗。
3)向IWDG_KR 寫入0XCCCC。
通過這句,來啟動 STM32 的看門狗。注意IWDG 在一旦啟用,就不能再被關閉!想要關
閉,只能重啟,并且重啟之后不能打開IWDG,否則問題依舊,所以在這里提醒大家,如果不
用IWDG 的話,就不要去打開它,免得麻煩。
通過上面 3 個步驟,我們就可以啟動STM32 的看門狗了,使能了看門狗,在程序里面就
必須間隔一定時間喂狗,否則將導致程序復位。利用這一點,我們通過一個LED 燈來指
示程序是否重啟,來驗證STM32 的獨立看門狗。

程序部分代碼:
    watchdong.h
#ifndef WATCHDOG_H
#define WATCHDOG_H
void WatchDog_Init(u8, u16);//申明看門狗的初始化函數
void WatchDog_Feed(void);//申明喂狗的函數
#endif

   watchdong.c
#include"common.h"
#include"watchdog.h"
//看門狗初始化,參數:prer-分頻,reld-計數器重裝載值
void WatchDog_Init(u8 prer, u16 reld)
{
  IWDG->KR=0x5555; //允許訪問PR和RLR寄存器
  IWDG->PR=prer;  //設置分頻
   IWDG->RLR=reld;//設定計數器初值
  IWDG->KR=0xaaaa; //初次裝初值
  IWDG->KR=0xcccc;  //啟動看門狗定時器
}
//喂狗
void WatchDog_Feed(void)
{
IWDG->KR=0xaaaa;
}
該代碼就2 個函數,void IWDG_Init(u8 prer,u16 rlr)是獨立看門狗初始化函數,就是按照
上面介紹的步驟來初始化獨立看門狗的。該函數有2 個參數,分別用來設置與預分頻數與重裝
寄存器的值的。通過這兩個參數,就可以大概知道看門狗復位的時間周期為多少了。其計算方
式上面有詳細的介紹,這里不再多說了。
void IWDG_Feed(void)函數,該函數用來喂狗,因為STM32 的喂狗只需要向鍵值寄存器寫
入0XAAAA 即可,
   主函數
#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);  //系統時鐘設置
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(); //喂狗
  
}
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:271494 發表于 2018-1-4 17:05 | 只看該作者
謝謝樓主
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清一区二区三区 | 成人福利视频网站 | 亚洲视频一区二区三区 | 国产网站在线免费观看 | 精品久久久久一区二区国产 | 精品二区| 狠狠狠 | 中文天堂网 | 色综合视频在线 | 四虎成人在线播放 | 欧美一区中文字幕 | 国产日韩欧美 | 色综网| 欧美在线a| 一区| 久久99精品久久久久久狂牛 | 草草视频在线观看 | 国产免费一区二区三区免费视频 | 一区二区三区视频在线观看 | 激情91 | 天天爽夜夜爽精品视频婷婷 | 亚洲永久字幕 | 99亚洲综合 | 在线播放中文字幕 | 欧美涩涩网| jvid精品资源在线观看 | 密室大逃脱第六季大神版在线观看 | 午夜精品福利视频 | 亚洲欧美国产一区二区三区 | 日韩精品在线看 | 国产精品中文 | 久久久国产一区二区 | 精品麻豆剧传媒av国产九九九 | 国产精品久久在线 | 欧美亚洲高清 | 九九99靖品| 中午字幕在线观看 | 国产99视频精品免费视频7 | 99精品免费视频 | 性一交一乱一伦视频免费观看 | 亚洲精品一区二区在线观看 |