色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32 之 外部開(kāi)門狗(iwdg)

          STM32 之 外部開(kāi)門狗(iwdg)

          作者: 時(shí)間:2016-12-03 來(lái)源:網(wǎng)絡(luò) 收藏
          獨(dú)立看門狗(IWDG)由專用的40kHz的低速時(shí)鐘驅(qū)動(dòng),

          即使主時(shí)鐘發(fā)生故障它也仍然有效。
          窗口看門狗由從APB1時(shí)鐘分頻后得到的時(shí)鐘驅(qū)動(dòng),
          通過(guò)可配置的時(shí)間窗口來(lái)檢測(cè)應(yīng)用程序非正常的過(guò)遲或過(guò)早的操作。

          本文引用地址:http://cafeforensic.com/article/201612/325145.htm

          IWDG最適合應(yīng)用于那些需要看門狗作為一個(gè)在主程序之外,
          能夠完全獨(dú)立工作,并且對(duì)時(shí)間精度要求較低的場(chǎng)合。

          WWDG最適合那些要求看門狗在精確計(jì)時(shí)窗口起作用的應(yīng)用程序

          IWDG主要性能
          ●自由運(yùn)行的遞減計(jì)數(shù)器
          ●時(shí)鐘由獨(dú)立的RC振蕩器提供(可在停止和待機(jī)模式下工作)
          ●看門狗被激活后,則在計(jì)數(shù)器計(jì)數(shù)至0x000時(shí)產(chǎn)生復(fù)位


          下面是使用代碼:

          C語(yǔ)言:Codee#18865
          voidLSI_RCC_Configuration(void)
          {
          RCC_LSICmd(ENABLE);//打開(kāi)LSI
          while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET);//等待直到LSI穩(wěn)定
          }


          =================================================================================

          voidIWDG_Configuration(void)
          {
          IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);// 打開(kāi)使能,因?yàn)?strong>iwdg的寄存器有寫保護(hù),必須先寫入0x5555,才能操作寄存器
          IWDG_SetPrescaler(IWDG_Prescaler_256);// 獨(dú)立看門狗使用內(nèi)部低速振蕩器LSI,對(duì)LSI進(jìn)行256分頻
          IWDG_SetReload(2500);// 設(shè)定獨(dú)立看門狗計(jì)數(shù)器的計(jì)數(shù)值(0x000~0xFFF;0~4095),復(fù)位時(shí)間為16s
          IWDG_ReloadCounter();// 重載獨(dú)立看門狗計(jì)數(shù)器,向寄存器寫入0xAAAA,或者更新計(jì)數(shù)值
          IWDG_Enable();// 開(kāi)啟看門狗,向寄存器寫入0xCCCC即可
          }

          喂狗程序直接使用IWDG_ReloadCounter();函數(shù)。

          其中 LSI_RCC_Configuration(); // 內(nèi)部低速時(shí)鐘配置 該函數(shù)可以不用,但是等低速內(nèi)部時(shí)鐘穩(wěn)定后再開(kāi)外部看門狗比較好。


          現(xiàn)在說(shuō)說(shuō)如何計(jì)算外部看門狗計(jì)數(shù)器復(fù)位的時(shí)間。

          先給出datasheet上的預(yù)分頻和對(duì)應(yīng)的時(shí)間范圍:

          我們來(lái)舉個(gè)例子:

          比如上面的代碼所示,預(yù)分頻256,然后計(jì)數(shù)值是2500次,則外部看門狗計(jì)數(shù)器復(fù)位時(shí)間為16秒。

          首先LSI是40KHz,這里不考慮其上下浮動(dòng)的情況。

          • 40000Hz / 256 = 156.25Hz 這里40KHz就是40000Hz進(jìn)行256分頻后,計(jì)數(shù)器的頻率為156.25Hz;
          • 1 / 156.25Hz = 0.0064s156.25Hz換算成時(shí)間就是0.0064秒,即為每次計(jì)數(shù)用時(shí)0.0064秒;
          • 0.0064s * 2500 = 16s 則2500次計(jì)數(shù)用時(shí)16秒,16秒后計(jì)數(shù)初值被減到零,觸發(fā)復(fù)位,被狗咬到。


          如何測(cè)試:

          stm32 的速率比較高,如果用LED作測(cè)試可能無(wú)法看到他的復(fù)位效果。

          所以還是用仿真器比較好用,下面是一個(gè)示意:



          關(guān)鍵詞: STM32外部開(kāi)門狗iwd

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉