<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è) > 嵌入式系統 > 設計應用 > STM32F10x 學(xué)習筆記7(獨立看門(mén)狗IWDG 模塊)

STM32F10x 學(xué)習筆記7(獨立看門(mén)狗IWDG 模塊)

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
按照STM32參考手冊的說(shuō)法:“獨立看門(mén)狗(IWDG)由專(zhuān)用的低速時(shí)鐘(LSI)驅動(dòng),即使主時(shí)鐘發(fā)生故障它也仍然有效。IWDG最適合應用于那些需要看門(mén)狗作為一個(gè)在主程序之外,能夠完全獨立工作,并且對時(shí)間精度要求較低的場(chǎng)合。WWDG最適合那些要求看門(mén)狗在精確計時(shí)窗口起作用的應用程序。”

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

簡(jiǎn)單的說(shuō),STM32中的IWDG其核心就是一個(gè)12bits的向下遞減的計數器,當計數器計數到零時(shí)就會(huì )觸發(fā)系統復位。因此,要在每次計數到零之前將其復位到一個(gè)初始值。這個(gè)初始值就在重裝載寄存器(IWDG_RLR)中存放,其默認值為0xFFF,我們也可以將其改為其他值。

計數器的時(shí)鐘由LSI時(shí)鐘經(jīng)過(guò)分頻后提供,預分頻因子由預分頻寄存器(IWDG_PR)的值來(lái)確定。具體的說(shuō)IWDG_PR寄存器只有最低的3位是有效的,其他高位永遠都為0,這最低的3位就決定了預分頻因子,這3位的值與預分頻因子的關(guān)系如下。

  1. 000:預分頻因子=4
  2. 100:預分頻因子=64
  3. 001:預分頻因子=8
  4. 101:預分頻因子=128
  5. 010:預分頻因子=16
  6. 110:預分頻因子=256
  7. 011:預分頻因子=32
  8. 111:預分頻因子=256

除了上面介紹的兩個(gè)寄存器,IWDG還有另外兩個(gè)寄存器,合起來(lái)共四個(gè)寄存器,分別是:

鍵寄存器(IWDG_KR)

預分頻寄存器(IWDG_PR)

重裝載寄存器(IWDG_RLR)

狀態(tài)寄存器(IWDG_SR)

所謂鍵寄存器(IWDG_KR),可以認為就是個(gè)控制寄存器,開(kāi)啟看門(mén)狗,喂狗需要操作鍵寄存器,修改其他寄存器值也需要先操作鍵寄存器(IWDG_KR)。

開(kāi)啟看門(mén)狗

向鍵寄存器(IWDG_KR)寫(xiě)入0xCCCC,啟動(dòng)看門(mén)狗工作。IWDG一旦啟動(dòng)了就不會(huì )停止,除非掐斷單片機的供電。

  1. IWDG->KR=0xCCCC;

STM32F10x_StdPeriph_Driver提供了如下函數。

  1. voidIWDG_Enable(void);

喂狗

向鍵寄存器(IWDG_KR)寫(xiě)入0xAAAA,這時(shí)計數器的值會(huì )復位為重裝載寄存器(IWDG_RLR)的值。

否則,當計數器為0時(shí),看門(mén)狗會(huì )產(chǎn)生復位。

  1. IWDG->KR=0xAAAA;

STM32F10x_StdPeriph_Driver提供了如下函數。

  1. voidIWDG_ReloadCounter(void);

修改預分頻因子

向鍵寄存器(IWDG_KR)寫(xiě)入0x5555,向預分頻寄存器(IWDG_PR)寫(xiě)入新值。

注意這兩步之間不能有其他的對IWDG的操作。

  1. IWDG->KR=0x5555;
  2. IWDG->PR=value;

利用STM32F10x_StdPeriph_Driver則需要如下調用兩個(gè)函數。

  1. IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  2. IWDG_SetPrescaler(value);

修改重裝載寄存器的值

向鍵寄存器(IWDG_KR)寫(xiě)入0x5555,向重裝載寄存器(IWDG_RLR)寫(xiě)入新值。

注意這兩步之間不能有其他的對IWDG的操作。

  1. IWDG->KR=0x5555;
  2. IWDG->RLR=value;

利用STM32F10x_StdPeriph_Driver則需要如下調用兩個(gè)函數。

  1. IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  2. IWDG_SetReload(value);

預分頻寄存器、重裝載寄存器與看門(mén)狗超時(shí)時(shí)間的關(guān)系如下表所示。


上面的介紹都沒(méi)有涉及到狀態(tài)寄存器(IWDG_SR)。這個(gè)寄存器不太常用,需要了解的可以參閱STM32參考手冊。

另外,當用調試器調試代碼時(shí),我們希望在產(chǎn)生斷點(diǎn)時(shí),計數器能夠停止計數。這可以通過(guò)設置DBGMCU_CR的第8位(DBG_IWDG_STOP位)來(lái)實(shí)現。

0:看門(mén)狗計數器仍然正常工作;

1:看門(mén)狗計數器停止工作。

操作代碼如下:

  1. DBGMCU->CR|=0x100;

STM32F10x_StdPeriph_Driver中也提供了相應的操作函數:

  1. DBGMCU_Config(DBGMCU_IWDG_STOP,ENABLE);



評論


技術(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>