<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > stm8的獨立看門狗與窗口看門狗

          stm8的獨立看門狗與窗口看門狗

          作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
          STM8擁有兩個硬件看門狗,分別叫做獨立看門狗窗口看門狗

          獨立看門狗的框圖如下

          本文引用地址:http://www.ex-cimer.com/article/201611/318189.htm


          我們可以看到,獨立看門狗的時鐘來自于LSI內(nèi)部低速振蕩器,經(jīng)過二分頻到達看門狗外設單元,在經(jīng)過一個七位的預分頻到達計數(shù)器,這個七位的分頻由PR控制,看門狗內(nèi)部使用一個八位的向下計數(shù)計數(shù)器來計數(shù),計數(shù)到0的時候發(fā)出看門狗復位信號,同時有一個RLR可以存放看門狗的初始化值,但對KR操作的時候看門狗計數(shù)器重載RLR的數(shù)據(jù),達到喂狗目的

          所以,對看門狗的處理應該分為以下步驟

          1.關閉看門狗

          2.啟動LSI系統(tǒng)低速時鐘

          3.設置時鐘的分頻系數(shù)

          4.設置看門狗重載的值

          5.在沒有復位之前喂狗,重新計數(shù)

          相關寄存器如下




          使用方法見以下代碼

          #ifndef __IWDG_H_#define __IWDG_H_#include "stm8s.h"void IWDGInit(void);//默認計數(shù)時間一svoid IWDGFeed(void);#endif

          #include "iwdg.h"void IWDGInit(void) //默認計數(shù)時間一分鐘{//首先打開LSI時鐘CLK->ICKR = (1<<3);while((CLK->ICKR&(1<<4)) == 0);//等待時鐘穩(wěn)定IWDG->KR = 0x55;//寫入解鎖IWDG->PR = 0x06;//分頻64K /256 = 250IWDG->RLR = 250;//計數(shù)值250 1復位IWDG->KR = 0xaa;//鎖定并刷新分頻器IWDG->KR = 0xcc;//啟動獨立看門狗}void IWDGFeed(void){IWDG->KR = 0xaa;//鎖定并刷新分頻器}

          窗口看門狗這是另一種模式,芯片定義了一個下線,低于0x40的時候產(chǎn)生復位,同時定義了一個上限,高于上限的時候喂狗同樣產(chǎn)生復位

          窗口看門狗的時鐘來自于cpu時鐘,分頻數(shù)為12288,使用看門狗過程如下

          1設置窗口值

          2設置當前計數(shù)值

          3啟動看門狗

          窗口看門狗一旦啟動無法關閉,除非發(fā)生復位系統(tǒng)自動關閉,具體使用查看代碼

          #ifndef __WWDG_H_#define __WWDG_H_#include "stm8s.h"void WWDGInit(void);void WWDGFeed(void);#endif

          #include "wwdg.h"void WWDGInit(void){if((WWDG->CR&0x80) == 1){return;}else{WWDG->WR = 0x60;WWDG->CR = 0xff;}}void WWDGFeed(void){u8 windows = WWDG->WR ;if((WWDG->CR&0x7f)>=windows)return;elseWWDG->CR = 0x7f;}



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();