在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32入門學習筆記之看門狗實驗(上)

jf_78858299 ? 來源:滑小稽筆記 ? 作者:電子技術園地 ? 2023-02-16 11:27 ? 次閱讀

14.1 STM32看門狗簡介

單片機構成的微型計算機系統中,單片機的工作可能會受到外界的電磁干擾或者程序運行的BUG導致程序指針錯誤,或者其他錯誤導致的死循環,引發整個系統陷入停滯狀態,所以需要一個與系統獨立的定時器來監控單片機的運行狀態,這個定時器在系統正常運轉的時候,不停的刷新定時器的計數器,例如隔一段時間給這個定時器的計數器寫100,然后在定時器減運算到0之前再一次寫入100,這樣,就保證了定時器不計數到0,也就意味著通過判斷這個定時器是否計數到0來判斷系統是否陷入死機狀態,實現這種功能的定時器就稱為看門狗,不停的刷新計數器值的行為就稱為“喂狗”,一般計數器計數到0后會直接對單片機進行復位,用于避免系統陷入死循環。

STM32內部有兩種看門狗模塊,一種是窗口看門狗WWDG,另一種是獨立看門狗IWDG,STM32的獨立看門狗由內部專門的40Khz低速時鐘驅動,即使主時鐘發生故障,它也仍然有效。

獨立看門狗的時鐘是一個內部RC時鐘,所以并不是準確的40Khz,而是在30~60Khz之間的一個可變化的時鐘,只是我們在估算的時候,以40Khz的頻率來計算。

窗口看門狗通常被用來監測由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運行序列而產生的軟件故障。除非遞減計數器的值在T6位變成0前被刷新,看門狗電路在達到預置的時間周期時,會產生一個MCU復位。

在遞減計數器達到窗口配置寄存器數值之前,如果7位的遞減計數器數值在控制寄存器中被刷新,那么也將產生一個MCU復位。這表明遞減計數器需要在一個有限的時間窗口中被刷新。

14.2 獨立看門狗相關寄存器

14.2.1 鍵值寄存器IWDG_KR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
KEY[15:0]

該寄存器屬于只寫寄存器,讀取的值為0x0000,軟件必須以一定間隔寫入0xAAAA,否則,當計數器為0時,看門狗會產生復位;

寫入0x5555表示允許訪問IWDG_PR和IWDG_RLR寄存器;

寫入0xCCCC表示啟動看門狗工作,如果選擇了硬件看門狗則不受此命令字限制。

14.2.2 預分頻寄存器IWDG_PR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- PR[2:0]

Bit 2~Bit 0:預分頻因子

000:預分頻因子=4

001:預分頻因子=8

010:預分頻因子=16

011:預分頻因子=32

100:預分頻因子=64

101:預分頻因子=128

110:預分頻因子=256

111:預分頻因子=256

14.2.3 重裝載寄存器IWDG_RLR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- RLR[11:0]

Bit 11~Bit 0:看門狗計數器重裝載值:每當向IWDG_KR寄存器寫入0xAAAA時,重裝載值會被傳送到計數器中,隨后計數器從這個值開始遞減計數。

14.3 窗口看門狗相關寄存器

14.3.1 控制寄存器WWDG_CR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- WDGA T6 T5 T4 T3 T2 T1 T0

Bit 7:激活位:,此位由軟件置1,但僅能由硬件在復位后清0。當WDGA=1時,看門狗可以產生復位

0:禁止看門狗

1:啟用看門狗

Bit 6~Bit 0:7位計數器,存儲看門狗的計數器值。每(4096x2 ^WDGTB^ )個PCLK1周期減1。當T6變成0產生看門狗復位

14.3.2 配置寄存器WWDG_CFR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- EWI TB1 TB0 W6 W5 W4 W3 W2 W1 W0

Bit 9:提前喚醒中斷,此位若置1,則當計數器值達到40h,即產生中斷,此中斷只能由硬件在復位后清除

Bit 8:預分頻器時基

00:CK計時器時鐘不分頻

01:CK計時器時鐘2分頻

10:CK計時器時鐘4分頻

11:CK計時器時鐘8分頻

Bit6~Bit 5:7位窗口值,用來與遞減計數器進行比較用的窗口值

14.3.3 狀態寄存器WWDG_SR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- EWIF

Bit 0:提前喚醒中斷標志,當計數器值達到40h時,此位由硬件置1。它必須通過軟件寫0來清除。若中斷未被使能,此位也會被置1

14.4 實驗例程

14.4.1 獨立看門狗實驗

功能:如果看門狗沒有復位,接在PB5上的LED常亮,如果PA0的按鍵按下,就喂狗,只要按鍵不停的按,看門狗就一直不會產生復位,保持DS0的常亮,一旦超過看門狗定溢出時間,那么將導致程序重啟,這將導致DS0熄滅一次。

(1)創建wdg.h文件輸入以下代碼。

#ifndef _WDG_H_
#define _WDG_H_


#include "sys.h"
/*********************************************************************************************************
                  函    數    列    表
*********************************************************************************************************/
void IWDG_Init( u8 prer, u16 rlr ) ;                                  //獨立看門狗初始化


#endif

(2)創建wdg.c文件輸入以下代碼。

#include "wdg.h"
/***************************************************
Name    :IWDG_Init
Function  :獨立看門狗初始化
Paramater  :
      prer:分頻數:0~7
      rlr:重裝載寄存器值
Return    :None
***************************************************/
void IWDG_Init( u8 prer, u16 rlr )
{
  IWDG->KR = 0x5555 ;                                          //使能對IWDG->PR和IWDG->RLR的寫
    IWDG->PR = prer ;                                          //設置分頻系數
    IWDG->RLR = rlr ;                                          //從加載寄存器 IWDG->RLR
  IWDG->KR = 0xAAAA ;                                          //更新計數器
    IWDG->KR = 0xCCCC ;                                          //使能看門狗
}

(3)在1.c文件中輸入以下代碼。

#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "wdg.h"
/***************************************************
Name    :LED_Init
Function  :LED初始化
Parameter  :None
Return    :None
***************************************************/
#define LED PBout( 5 )                                          //定義LED端口
void LED_Init()
{
  RCC->APB2ENR |= 1<<3 ;
  GPIOB->CRL &= 0xFF0FFFFF ;
  GPIOB->CRL |= 0x00300000 ;
  LED = 1 ;
}
/***************************************************
Name    :KEY_Init
Function  :KEY初始化
Parameter  :None
Return    :None
***************************************************/
#define KEY  PAin( 0 )                                          //定義按鍵端口
void KEY_Init()
{
  RCC->APB2ENR |= 1<<2 ;
  GPIOA->CRL &= 0xFFFFFFF0 ;
  GPIOA->CRL |= 0x00000008;
}
/***************************************************
Name    :main
Function  :主函數
Parameter  :None
Return    :None
***************************************************/
int main()
{
  STM32_Clock_Init( 9 ) ;                                        //STM32時鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LED_Init() ;                                            //LED初始化
  KEY_Init() ;                                            //按鍵初始化
   delay_ms( 500 ) ;                                          //延時500ms,讓人可以看到DS0滅的狀態
   IWDG_Init( 4, 625 ) ;                                        //與分頻數為64,重載值為625,溢出時間為1s
  LED = 0 ;                                              //點亮DS0
  while( 1 )
  {
    if( KEY==1 )
    {
      delay_ms( 10 ) ;
      if( KEY==1 )
      {
        IWDG->KR = 0xAAAA ;                                    //喂狗
      }
    }
    delay_ms( 20 ) ;
  }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6040

    文章

    44592

    瀏覽量

    636833
  • 看門狗
    +關注

    關注

    10

    文章

    565

    瀏覽量

    70874
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356734
  • 計數器
    +關注

    關注

    32

    文章

    2259

    瀏覽量

    94802
  • 定時器
    +關注

    關注

    23

    文章

    3254

    瀏覽量

    115067
收藏 人收藏

    評論

    相關推薦

    STM32中的獨立看門狗和窗口看門狗是什么

    在早期的MCU中是沒有看門狗這種東西的,所以產品就很容易出現死機,跑飛的情況。為了避免這種情況的出現,后期的MCU都集成了看門狗的功能。但是目前看門狗發展到今天基本分為兩大類:獨立
    的頭像 發表于 02-20 17:47 ?2797次閱讀
    <b class='flag-5'>STM32</b>中的獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>是什么

    STM32_獨立看門狗程序

    STM32 獨立看門狗程序,很好的學習資料,快來下載吧
    發表于 02-15 17:08 ?25次下載

    ALIENTEK_MINISTM32_實驗5_獨立看門狗實驗

    ALIENTEK MINISTM32 實驗5 獨立看門狗實驗,很好的資料,快來學習
    發表于 02-18 14:58 ?6次下載

    ALIENTEK_MINISTM32_實驗6_窗口看門狗實驗

    ALIENTEK MINISTM32 實驗6 窗口看門狗實驗,很好的資料,快來學習
    發表于 02-18 14:58 ?4次下載

    什么是stm32看門狗?獨立看門狗和窗口看門狗工作原理解析

    stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。 獨立看門狗
    的頭像 發表于 11-06 11:48 ?2.8w次閱讀
    什么是<b class='flag-5'>stm32</b><b class='flag-5'>看門狗</b>?獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>工作原理解析

    STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

    stm32自帶兩個看門狗模塊,獨立看門狗IWDG和窗口看門狗WWDG。看門狗主要作用是可用來檢測和解決由軟件錯誤引起的故障;當計數器達到給定
    發表于 11-09 17:17 ?8465次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>看門狗</b>配置(獨立<b class='flag-5'>看門狗</b>IWDG和窗口<b class='flag-5'>看門狗</b>WWDG)

    STM32看門狗配置詳情解說

     stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。獨立看門狗有自己獨立的40Khz時鐘,不存
    發表于 11-13 11:17 ?4486次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>看門狗</b>配置詳情解說

    獨立看門狗實驗-IWDG-M3

    關于STM32獨立看門狗實驗文檔
    發表于 11-27 15:30 ?3次下載

    基于STM32、FreeRTOS 實現硬件看門狗+軟件看門狗監測多任務的方法

    基于STM32、FreeRTOS實現硬件看門狗+軟件看門狗監測多任務的方法
    的頭像 發表于 03-12 10:11 ?9474次閱讀

    stm32看門狗的特點是什么

    stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。
    的頭像 發表于 07-22 11:08 ?4088次閱讀

    MCU學習筆記_IWDG獨立看門狗

    MCU學習筆記IWDG獨立看門狗1. IWDG獨立看門狗概述2. 寄存器和HAL庫函數配置3. 實例1. IWDG獨立看門狗概述
    發表于 10-28 20:21 ?9次下載
    MCU<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>_IWDG獨立<b class='flag-5'>看門狗</b>

    STM32學習心得十六:獨立看門狗實驗

    記錄一下,方便以后翻閱~主要內容:1) 獨立看門狗概述;2) 常用寄存器和庫函數配置;3) 獨立看門狗實驗代碼解讀。官方資料:《STM32中文參考手冊V10》第17章——獨立
    發表于 12-27 18:44 ?6次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學習</b>心得十六:獨立<b class='flag-5'>看門狗</b><b class='flag-5'>實驗</b>

    STM32:獨立看門狗、窗口看門狗的配置

    STM32單片機的看門狗有獨立看門狗和窗口看門狗之分,這兩者的工作原理卻完全不同。
    發表于 02-08 16:15 ?18次下載
    <b class='flag-5'>STM32</b>:獨立<b class='flag-5'>看門狗</b>、窗口<b class='flag-5'>看門狗</b>的配置

    STM32中的獨立看門狗和窗口看門狗

    一、前言 在早期的MCU中是沒有看門狗這種東西的,所以產品就很容易出現死機,跑飛的情況。為了避免這種情況的出現,后期的MCU都集成了看門狗的功能。但是目前看門狗發展到今天基本分為兩大
    的頭像 發表于 12-22 16:58 ?2190次閱讀

    STM32中的獨立看門狗和窗口看門狗

    在早期的MCU中是沒有看門狗這種東西的,所以產品就很容易出現死機,跑飛的情況。為了避免這種情況的出現,后期的MCU都集成了看門狗的功能。但是目前看門狗發展到今天基本分為兩大類:獨立
    的頭像 發表于 01-30 14:38 ?1413次閱讀
    <b class='flag-5'>STM32</b>中的獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>
    主站蜘蛛池模板: 97影院理论午夜论不卡| www亚洲欲色成人久久精品| 色综合天天综合网国产成人 | freesex欧美| 午夜资源在线| 日日操天天射| 国产高清a| 中文字幕一区在线观看| 狠狠激情五月综合婷婷俺| 激情五月婷婷色| 成色视频| 国产精品成人四虎免费视频| 高清成人| 天天谢天天干| 国产chinesetube| 操女人网址| 五月婷婷欧美| 8888奇米四色在线| 狠狠色噜噜综合社区| 天天噜噜色| 噜噜吧噜噜色| xxxxxx日本人免费| 女女色综合影院| 黄色大片视频网站| 在线免费观看色视频| 色老头综合| 国内精品一级毛片免费看| 午夜精品视频在线看| 国产午夜毛片v一区二区三区| 亚洲一区在线免费观看| 91操视频| 亚洲成电影| 久久久久久久性潮| 午夜免费啪在线观看视频网站| 国产美女亚洲精品久久久久久| 韩国午夜精品理论片西瓜| 8844aa在线毛片| 亚洲va久久久久综合| 久久久久久99| 日本特级黄色录像| 欧美一区二区三区不卡视频|