日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]一。 窗口看門狗和獨立看門狗的區(qū)別1)獨立看門狗沒有中斷,窗口看門狗有中斷2)獨立看門狗有硬件軟件之分,窗口看門狗只能軟件控制3)獨立看門狗只有下限,窗口看門狗又下限和上限4)獨立看門狗是12位遞減的。窗口看

一。 窗口看門狗和獨立看門狗的區(qū)別



1)獨立看門狗沒有中斷,窗口看門狗有中斷

2)獨立看門狗有硬件軟件之分,窗口看門狗只能軟件控制

3)獨立看門狗只有下限,窗口看門狗又下限和上限

4)獨立看門狗是12位遞減的。窗口看門狗是7位遞減的

5)獨立看門狗是用的內(nèi)部的大約40KHZ RC振蕩器,窗口看門狗是用的系統(tǒng)時鐘APB1ENR

接下來介紹一下獨立看門狗和窗口看門狗,這里我們就不講解程序了,很簡單的,配置一下寄存器就可以使用了。

獨立看門狗沒有中斷功能,只要在計數(shù)器減到0(下限)之前,重新裝載計數(shù)器的值,就不會產(chǎn)生復位,獨立看門夠有硬件和軟件之分,硬件是通過燒寫器的“設(shè)定選項幾節(jié)等”配置,一旦開啟了硬件看門狗,那么就停不下來了,只能在重新配置“設(shè)定選項幾節(jié)等”才能關(guān)掉硬件看門狗,軟件看門狗只需要設(shè)置IWDG->KR=0XCCCC;就可以啟動看門狗了,軟件狗可以在系統(tǒng)復位時關(guān)掉,如果在在初始化里開啟軟件看門狗,那就開啟了軟件看門狗,

獨立看門狗是12位遞減的寄存器,使用片子內(nèi)部的RC振蕩器,這個振蕩器是關(guān)不掉的。

窗口看門狗是7位遞減計數(shù)器,有中斷,這個中斷的作用是在計數(shù)器達到下限0x40的時候,產(chǎn)生中斷,讓你喂狗,如果你不喂狗,計數(shù)器的值變?yōu)?x3f的時候,將會產(chǎn)生系統(tǒng)復位,即使是喂狗,也應該在中斷里快速喂狗,要不時間長了計數(shù)器減一也會變成0x3f產(chǎn)生復位,這個時間根據(jù)芯片手冊的公式進行計算即可得到,窗口看門狗只有軟件開啟方式,還有一個上限值,這個值如果大于計數(shù)器的初始值,那么就沒有任何作用了,這個值小于計數(shù)器的初始值得時候,當計數(shù)器的值大于上限值時你對計數(shù)器進行裝載,將會產(chǎn)生復位,只有在計數(shù)器減到小于上限值時,你才能重新裝載計數(shù)器,意思就是說只有計數(shù)器的值在上限值和下限值之間你才能裝載計數(shù)器,否則就會產(chǎn)生系統(tǒng)復位,當上限值小于下限值,也沒有意義。

獨立看門狗Iwdg——獨立于系統(tǒng)之外,因為有獨立時鐘,所以不受系統(tǒng)影響的系統(tǒng)故障探測器。主要用于監(jiān)視硬件錯誤。

窗口看門狗wwdg——是系統(tǒng)內(nèi)部的故障探測器,時鐘與系統(tǒng)相同。如果系統(tǒng)時鐘不走了,這個狗也就失去作用了。主要用于監(jiān)視軟件錯誤。

//發(fā)現(xiàn)1:當窗口值大于等于計數(shù)器的值,無論怎么更改配置的順序,都是正確的運行結(jié)果

//發(fā)現(xiàn)2:當窗口值小于計數(shù)器的值,順序一旦改變就運行錯誤

經(jīng)過測試發(fā)現(xiàn),當初始化的順序不是正常順序的話,就會把WWDG->SR置1,為什么我也不知道,誰知道片子里面怎么搞的。你在開啟中斷就進入中斷的,這時你又進行喂狗,就會復位的,因為這時計數(shù)器的值>上限窗口的值,所以會復位,所以就會一直出錯下去

解決辦法是,初始話的時候最后兩句是先清除中斷標志然后在開啟中斷,如果你不這么干,那么在初始化的時候很可能把WWDG->SR置位,那么你在開啟中斷,就會毫不猶豫的進入中斷,你在中斷重裝計數(shù)器值得時候,就會產(chǎn)生復位


二。窗口看門狗的 3 個寄存器

1.控制寄存器(WWDG_CR)


WDGA位:看門狗的激活位,該位由軟件置1,并且一定要注意的是該位一旦設(shè)置,就只能在硬件復位后才能清零了。

T[6: 0]用來存儲看門狗的計數(shù)器值

2.配置寄存器(WWDG_CFR)


W0-W6:設(shè)置上窗口值

WDGTB:設(shè)置計數(shù)器的計數(shù)頻率 ,PCLK1也就是APB1的時鐘

EWI:提前喚醒中斷,我們一般用該位來設(shè)置中斷,當窗口看門狗的計數(shù)器值減到 0X40 的時候,如果該位設(shè)置,并開啟了中斷,則會產(chǎn)生中斷,我們可以在中斷里面向 WWDG_CR 重新寫入計數(shù)器的值,來達到喂狗的目的。

3.狀態(tài)寄存器(WWDG_SR)

該寄存器用來記錄當前是否有提前喚醒的標志。該寄存器僅有位 0 有效,其他都是保留位。當計數(shù)器值達到 40h 時,此位由硬件置 1。它必須通過軟件寫 0 來清除。對此位寫 1 無效。即使中斷未被使能,在計數(shù)器的值達到 0X40的時候,此位也會被置 1。

4. 喂狗的方法有兩種:

a:中斷的方法

b:查詢的方法,查詢狀態(tài)寄存器

三。啟用窗口看門狗的步驟

1.使能 WWDG 時鐘

RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG 時鐘使能

2.設(shè)置窗口值和分頻數(shù)

設(shè)置上窗口值的函數(shù)是:

void WWDG_SetWindowValue(uint8_t WindowValue);

設(shè)置分頻數(shù)的函數(shù)是:

void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);

這個函數(shù)同樣只有一個入口參數(shù)就是分頻值。決定了計數(shù)器的計數(shù)頻率

3.開啟 WWDG 中斷并分組

開啟 WWDG 中斷的函數(shù)為:

WWDG_EnableIT(); //開啟窗口看門狗中斷

接下來是進行中斷優(yōu)先級配置,這里就不重復了,使用 NVIC_Init()函數(shù)即可。

4.設(shè)置計數(shù)器初始值并使能看門狗

void WWDG_Enable(uint8_t Counter);

該函數(shù)既設(shè)置了計數(shù)器初始值,同時使能了窗口看門狗。

5.編寫中斷服務函數(shù)

在中斷服務函數(shù)里面也要將狀態(tài)寄存器的 EWIF 位清空。

四。實例

//保存 WWDG 計數(shù)器的設(shè)置值,默認為最大.

u8 WWDG_CNT=0x7f;

//初始化窗口看門狗

//tr :T[6:0],計數(shù)器值

//wr :W[6:0],窗口值

//fprer:分頻系數(shù)(WDGTB),僅最低 2 位有效

//Fwwdg=PCLK1/(4096*2^fprer).

void WWDG_Init(u8 tr,u8 wr,u32 fprer)

{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG 時鐘使能

WWDG_CNT=tr&WWDG_CNT; //初始化 WWDG_CNT.

WWDG_SetPrescaler(fprer); //設(shè)置 IWDG 預分頻值

WWDG_SetWindowValue(wr); //設(shè)置窗口值

WWDG_Enable(WWDG_CNT); //使能看門狗,設(shè)置 counter

WWDG_ClearFlag(); //清除提前喚醒中斷標志位

WWDG_NVIC_Init(); //初始化窗口看門狗 NVIC

WWDG_EnableIT(); //開啟窗口看門狗中斷

}

//重設(shè)置 WWDG 計數(shù)器的值

void WWDG_Set_Counter(u8 cnt)

{

WWDG_Enable(cnt); //使能看門狗,設(shè)置 counter .

}

//窗口看門狗中斷服務程序

void WWDG_NVIC_Init()

{

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG 中斷

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //搶占 2 子優(yōu)先級 3 組 2

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //搶占 2,子優(yōu)先級 3,組 2

NVIC_Init(&NVIC_InitStructure); //NVIC 初始化

}

void WWDG_IRQHandler(void)

{

WWDG_SetCounter(WWDG_CNT); //當禁掉此句后,窗口看門狗將產(chǎn)生復位

WWDG_ClearFlag(); //清除提前喚醒中斷標志位

LED1=!LED1; //LED 狀態(tài)翻轉(zhuǎn)

}

實驗中每喂狗一次,LED1(綠燈)狀態(tài)翻轉(zhuǎn)一次,翻轉(zhuǎn)一次的時間為:

main()程序中設(shè)置了分頻數(shù)為8,見下表


LED1翻轉(zhuǎn)一次時間為58.25ms


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

單片機將是下述內(nèi)容的主要介紹對象,通過這篇文章,小編希望大家可以對它的相關(guān)情況以及信息有所認識和了解,詳細內(nèi)容如下。

關(guān)鍵字: 單片機 中斷 boot

在嵌入式系統(tǒng)的開發(fā)中,中斷機制扮演著至關(guān)重要的角色。它允許系統(tǒng)在執(zhí)行正常程序流程時,響應外部或內(nèi)部事件,從而確保系統(tǒng)能夠及時響應并處理緊急事件。本文將深入探討嵌入式系統(tǒng)中中斷的概念、如何在系統(tǒng)中設(shè)置和處理多個中斷的優(yōu)先級...

關(guān)鍵字: 嵌入式系統(tǒng) 中斷

STM32有兩個看門狗,獨立看門狗和窗口看門狗。其實兩者的功能是類似的,只是喂狗的限制時間不同。

關(guān)鍵字: 看門狗 窗口看門狗

中斷機制在單片機及嵌入式系統(tǒng)中是重中之重,我們必須深入理解。首先我們要明白一點:CPU執(zhí)行指令代碼,并非一直順序地逐條執(zhí)行,而是可能突然跳到某段代碼上去的。因為這段代碼的優(yōu)先級更高,或者說它更加緊迫,CPU必須暫時放下手...

關(guān)鍵字: 中斷 單片機 嵌入式系統(tǒng)

PIC單片機是基于RISC系統(tǒng)結(jié)構(gòu)的單片機,最初的設(shè)計是支持PDP(編程數(shù)據(jù)處理器)計算機。大量的操作可以用來控制外圍設(shè)備。PIC單片機比微控制器具有更快的程序執(zhí)行能力。它是由微芯片技術(shù)公司于1889年發(fā)明的,是一種8位...

關(guān)鍵字: PIC單片機 定時器 中斷

STC單片機是一款增強型51單片機,完全兼容MCS-51,還增加了新的功能,比如新增兩級中斷優(yōu)先級,多一個外中斷,內(nèi)置EEPROM,硬件看門狗,具有掉電模式,512B內(nèi)存等。還支持ISP下載,不用編程器,只要一個MAX2...

關(guān)鍵字: 單片機 看門狗 中斷

什么是PIC中斷程序呢?形象的生活比喻就比如你現(xiàn)在這在看我的文章,突然你的朋友喊你一起去烤地瓜,這時候你就中斷了看文章和朋友烤地瓜去了,烤完地瓜之后你又回來看文章。烤地瓜這件事就好比中斷程序,他中斷了你看文章這件事。在程...

關(guān)鍵字: PIC 中斷 標志位

MCS—51系列單片機內(nèi)部只需兩個外部接中斷連源輸入端,當外部接連源多于兩個時,就必須進行拓寬,下面介紹幾種簡略的拓寬辦法:

關(guān)鍵字: 單片機 軟件 中斷

最近在瀏覽星球主題的時候,發(fā)現(xiàn)一位球友打卡中斷了,就去關(guān)心了一下他(瞧我這該死的責任心??),結(jié)果被他反手就問了下面這個問題。

關(guān)鍵字: 中斷 Spring Boot 實戰(zhàn)項目

實質(zhì)上是加一的計數(shù)器。外部脈沖讓他不斷加一,當計數(shù)器溢出時,計數(shù)器的溢出相應的中斷標志位置1,并向CPU發(fā)出中斷請求。如果定時器/計數(shù)器工作為定時模式,則表示時間以到;如果工作于計數(shù)模式,則表示計數(shù)器、則表示計數(shù)值已滿。

關(guān)鍵字: 周期 中斷
關(guān)閉