亚洲国产另类一区在线5,国产又黄又粗又刺激的视频,日本欧美视频图片,欧美日韩午夜大片在线观看

  • <source id="awnaw"></source>

    您好,歡迎訪問上海意泓電子科技有限責任公司網(wǎng)站!
    4新聞資訊
    您的位置: 首頁 ->  新聞資訊 -> 單片機

    ?關于STC15F2K60S2看門狗的應用

    文章出處:單片機 責任編輯:上海意泓電子科技有限責任公司 發(fā)表時間:
    2020
    11-10

    關于STC15F2K60S2看門狗的應用

    1.STC15F2K60S2系列單片機的內部結構圖

    STC15F2K60S2系列單片機的內部結構框圖如下圖所示,STC15F2K60S2系列單片機中包含中央處理器(CPU)、程序存儲器(Flash)、數(shù)據(jù)存儲器(SRAM)、定時器、IO口、高速A/D轉換、看門狗、UART高速異步串行通信口1/串行通信口2,CCP/PWM/PCA,一組高速同步串行端口SPI,片內高精度R/C時鐘及高可靠復位等模塊,STC15F2K60S2系列單片機幾乎包含了數(shù)據(jù)采集和控制中的所有單元模塊。



    2.目的:

    在工業(yè)控制/汽車電子/航空航天等需要高可靠行的系統(tǒng)中,為了防止“系統(tǒng)在異常情況下,受到干擾,MCU/CPU程序跑飛,導致系統(tǒng)長時間異常工作”,通常是引進看門狗,如果MCU/CPU不在規(guī)定的時間內按要求訪問看門狗,就認為MCU/CPU處于異常狀態(tài),看門狗就會強迫MCU/CPU復位,使系統(tǒng)重新從頭開始按規(guī)律執(zhí)行用戶程序??撮T狗復位狀態(tài)結束后,不影響特殊功能寄存器IAP_ONTR中SWBS/IAP_ONTR.6位的值,單片機根據(jù)復位前SWBS/IAP_ONTR.6的值選擇是從用戶應用程序區(qū)啟動,還是從系統(tǒng)ISP監(jiān)控程序區(qū)啟動。如果看門狗復位前SWBS/IAP_ONTR.6的值為0,則看門口復位狀態(tài)結束后單片機從系統(tǒng)ISP監(jiān)控程序區(qū)啟動??撮T狗復位是熱啟動復位中的軟復位之一。

    工作原理:看門狗實際上是一個定時器或計數(shù)器,簡稱WDT。單片機運行工作中,看門狗會對單片機機器周期脈沖不停計數(shù),當單片機程序陷入死循環(huán)時,單片機程序如果不能及時對看門狗的定時器復位,看門狗就會在其定時器計滿溢出時產(chǎn)生一個復位信號,從而使系統(tǒng)重啟。

    看門狗應用時,首先確定看門狗計數(shù)器的位數(shù),然后參考計數(shù)脈沖周期計算出看門狗計數(shù)溢出所需的時間T,喂狗程序 喂狗時間要小于T,這樣隔一段時間喂一次狗,只要程序正常運行,看門狗定時器就不會溢出。一旦出現(xiàn)程序死循環(huán)故障,喂狗程序失敗,不能對看門狗定時器及時清零,就會導致計時器溢出,重啟系統(tǒng)。

    3.特殊寄存器:

    STC15系列單片機內部也引進了此看門狗功能,使單片機系統(tǒng)可靠性設計變得更加方便/簡潔。為此功能,我們增加如下特殊功能寄存器WDT_CONTR:

    WDT_CONTR:看門狗(Watch—dog—Timer)控制寄存器

    SFR name

    Address

    bit

    B7

    B6

    B5

    B4

    B3

    B2

    B1

    B0

    WDT_CONTR

    0C1H

    name

    WDT_FLAG

    _

    EN_WDT

    CLR_WDT

    IDLE_WDT

    PS2

    PS1

    PS0

    WDT_FLAG: 看門狗溢出標志位,當溢出時,該位由硬件置1,可用軟件將其清零。

    EN_WDT: 看門狗允許位,當設置為“1”時看門狗啟動。

    CLR_WDT: 看門狗清“0”位,當設為“1”時,看門狗重新計數(shù)。硬件將自動清“0”此位。

    IDLE_WDT: 看門狗“IDLE”模式位,當設置為“1”時,看門狗定時器在“空閑模式”計數(shù),當清”0”該位時,看門狗定時器在“空閑模式”時不計數(shù)。

    PS2,PS1,PS0:看門狗定時器分頻值,如下表所示

    PS2

    PS1

    PS0

    Pre_scale預分頻

    WDT overflow Time @20MHz

    0

    0

    0

    2

    39.3ms

    0

    0

    1

    4

    78.6ms

    0

    1

    0

    8

    157.3ms

    0

    1

    1

    16

    314.6ms

    1

    0

    0

    32

    629.1ms

    1

    0

    1

    64

    1.25s

    1

    1

    0

    128

    2.5s

    1

    1

    1

    256

    5s

    看門狗溢出時間 = (12 *Pre—scale*32768)/Oscillatorfrequency

    設時鐘為12MHz

    看門狗溢出時間 = (12 *Pre—scale*32768)/12000000= Pre—scale*393216/12000000

    PS2

    PS1

    PS0

    Pre_scale預分頻

    WDT overflow Time @12MHz

    0

    0

    0

    2

    65.5ms

    0

    0

    1

    4

    131.0ms

    0

    1

    0

    8

    262.1ms

    0

    1

    1

    16

    524.2ms

    1

    0

    0

    32

    1.0485s

    1

    0

    1

    64

    2.0971s

    1

    1

    0

    128

    4.1943s

    1

    1

    1

    256

    8.3886s

    設時鐘為11.0592MHz

    看門狗溢出時間 = (12 *Pre—scale*32768)/11059200 = Pre—scale*393216/11059200

    PS2

    PS1

    PS0

    Pre_scale預分頻

    WDT overflow Time @11.0592MHz

    0

    0

    0

    2

    71.1ms

    0

    0

    1

    4

    142.2ms

    0

    1

    0

    8

    284.4ms

    0

    1

    1

    16

    568.8ms

    1

    0

    0

    32

    1.1377s

    1

    0

    1

    64

    2.2755s

    1

    1

    0

    128

    4.5511s

    1

    1

    1

    256

    9.1022s

    4.程序:

    用LED燈的亮表示程從頭序運行,用延時函數(shù)改變兩次喂狗時間間隔。

    /****************************測試程序******************************/

    #include

    sbit led = P0^0;

    sfr WDT_CONTR = 0xel;/*定義STC單片機中新加入的看門狗程序*/

    void delay(unsigned int x)/*定義延時函數(shù)*/

    {

    while(x--);

    }

    void main(void)

    {

    WDT_CONTR = 0x35;/*設置模式計數(shù)器值*/

    led = 1;

    delay(20000);

    led = 0;

    while(1)

    {

    WDT_CONTR = 0x35;

    delay(50000);

    }

     

    }

    (1)程序開始后,點亮發(fā)光二極管后延時一段時間熄滅,延時不能過長,若兩次喂狗時間間程序運行時間大于看門狗溢出時間,看門狗將復位單片機,可調節(jié)這個時間,讓看門狗是否復位。

    (2)喂狗時使用和設定看門狗寄存器同樣的語句,只要看門狗寄存器中CLR—WDT位置“1”,看門狗定時器重新計數(shù),由硬件自動將其清零。

    (3)演示為發(fā)光二極管亮后熄滅不會再亮,這說明程序沒被復位,while循環(huán)中看門狗被正常喂狗,若將WDT_CONTR= 0x35;去掉程序將會不停復位,因為看門狗定時器溢出復位。


    上海意泓電子科技有限責任公司 版權所有 未經(jīng)授權禁止復制或鏡像

    CopyRight 2020-2025 www.gohomedream.com All rights reserved   滬ICP備2021005866號