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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM8L探索套件學習筆記-獨立看門狗IWDG(十六)

          STM8L探索套件學習筆記-獨立看門狗IWDG(十六)

          作者: 時間:2016-11-24 來源:網(wǎng)絡 收藏
          STM8L獨立看門狗由內(nèi)部專門的 38Khz 低速時鐘驅(qū)動,即使主時鐘發(fā)生故障,它也仍然有效。這里需要注意獨立看門狗的時鐘并不是準確的 38Khz,只是我們在估算的時候,以 38Khz 的頻率來計算,看門狗對時間的要求不是很精確,所以,時鐘有些偏差,都是可以接受的。根據(jù)分頻系統(tǒng)和看門狗計數(shù)值可以設置獨立看門狗的復位時間,范圍從0.1ms~1724.63ms
          例程展示如何重載IWDG計數(shù)值,IWDG的時間設置為214.7ms。程序采用“Refresh”變量來使能IWDG重載計數(shù)值仿真IWDG復位,并且板上LED4翻轉(zhuǎn)。當按鍵按下,模擬一次軟件錯誤造成程序沒有喂狗,從而發(fā)生復位。如果IWDG復位,系統(tǒng)啟動后LED3會翻轉(zhuǎn)8次,主代碼如下:
          void main(void)
          {
          uint8_t Index;
          GPIO_Init(LED3_PORT,LED3_PIN,GPIO_Mode_Out_PP_Low_Fast);
          //輸出低電平-高速10M
          GPIO_Init(LED4_PORT,LED4_PIN,GPIO_Mode_Out_PP_Low_Fast);
          //輸出低電平-高速10M
          GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_IT);
          //輸入浮空-中斷
          /* Set PC1 sensitivity to falling edge and low level 下降沿低電平觸發(fā)*/
          EXTI_SetPinSensitivity(EXTI_Pin_1, EXTI_Trigger_Falling_Low);
          /* Check if the MCU has resumed from IWDG reset */
          if (RST_GetFlagStatus(RST_FLAG_IWDGF) != RESET)
          {
          /* IWDGF flag set */
          /* Toggle LED3 */
          for (Index = 7; Index != 0; Index--)
          {
          GPIO_ToggleBits(LED3_PORT,LED3_PIN);
          Delay(0x7FFF);
          }
          /* Clear IWDGF Flag */
          RST_ClearFlag(RST_FLAG_IWDGF);
          }
          /* IWDG configuration: IWDG is clocked by LSI = 38KHz */
          /* IWDG timeout equal to 214.7 ms (the timeout may varies due to LSI frequency dispersion) */
          /* IWDG timeout = (RELOAD_VALUE + 1) * Prescaler / LSI = (254 + 1) * 32 / 38 000 = 214.7 ms */
          /* Enable the IWDG */
          IWDG_Enable();
          /* Enable write access to IWDG_PR and IWDG_RLR registers */
          IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
          /* Set IWDG timeout */
          IWDG_SetPrescaler(IWDG_Prescaler_32);
          IWDG_SetReload(RELOAD_VALUE);
          /* Refresh IWDG */
          IWDG_ReloadCounter();
          /* enable interrupts by switching to level 0 */
          enableInterrupts();
          while (1)
          {
          /* As Refresh is equal to ENABLE no IWDG reset will occur. When Refresh is
          equal to DISABLE, the IWDG counter isnt refreshed and IWDG reset will occur. */
          if (Refresh != 0)
          {
          /* Reload IWDG counter */
          IWDG_ReloadCounter();
          }
          /* Toggle LED4 */
          GPIO_ToggleBits(LED4_PORT,LED4_PIN);
          Delay(0x6FFF);
          }
          }


          評論


          技術專區(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); })();