娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年11月12日(星期二)

正在發生

2019年11月12日 | STM32F1小白系列之四、獨立看門狗(IWDG)

發布者:溫文儒雅 來源: eefocus關鍵字:STM32F1  獨立看門狗  IWDG 手機看文章 掃描二維碼
隨時隨地手機看文章

一、看門狗原理


1、單片機中有一個【寄存器計數器)】專門用來倒計數,這個計數器倒計數是獨立于程序之外的,不受程序影響的。(程序是井,計數器是河,井水不犯河水,你跑你的程序,我記我的數,互不影響。)


2、但是: 

這個【計數器】會有一個初值,這個值會逐次遞減,終有一刻會自減到0,當計數自減到0的時候,【系統】就會強制重啟,程序會從頭開始運行。 

而當計數器每次倒計數到0之前,如果往計數器里面重新寫入一次數值,他就永遠不會倒計數到0,這時候系統也就不會重啟了。


3、所以: 

程序員寫程序的時候,如果開啟了看門狗,會在程序中實現這樣一個功能——專門設定固定的時間循環往復的往【計數器】中寫入一個數值(喂狗)。


當程序正常運行的時候,每隔一段時間,【計數器】會被重新寫入數值,那么它永遠不會倒計時到0, 

而當程序跑飛或者系統卡死,程序不能按照預想的要求來執行,也就不能在設定的時間去喂狗,那么計數器肯定會有一個時刻倒計數到0,系統就會重啟,程序就會從頭開始跑,又恢復到初始運行狀態。


4、所以: 

看門狗的作用就是——不用人為的檢查程序是否正常運行,系統是否正常運行,需不需要重啟系統,如果程序跑飛或者系統卡死,則自動重新啟動系統,而不要人為的主動去重新啟動系統。


二、看門狗相關寄存器


1、 鍵值寄存器 IWDG_KR

2、 預分頻寄存器 IWDG_PR

3、 重裝載寄存器 IWDG_RLR

4、 狀態寄存器 IWDG_SR


三、配置看門狗步驟


1、使能寄存器可寫入(即:關閉寫保護)

    向【鍵值寄存器(IWDG_KR)】寫入【0xAAAA】即可使【預分頻寄存器】和【重裝載寄存器】變得可以寫入數據。


2、配置預分頻值

    數據位[2:0]。

    預分頻因子:4/8/16/32/64/128/256


3、配置重裝載值

    數據位[11:0].


4、重新裝載一次計數值(喂狗一次)


5、啟動看門狗


四、看門狗程序


1、使用庫函數


1)相關庫函數


1 關閉寫保護 IWDG_WriteAccessCmd();

2 配置預分頻值 IWDG_SetPrescaler();

3 配置重裝載值 IWDG_SetReload();

4 重新裝載計數器 IWDG_ReloadCounter();

5 使能看門狗(啟動看門狗) IWDG_Enable();


2)程序


/*

    函數功能:初始化獨立看門狗

    函數名:init_iwdg

    返回值:void

    參數:  pre_scaler_value   預分頻值

           reload_value       重裝載數值

 */

void init_iwdg(uint8_t pre_scaler_value, uint32_t reload_value)

{

    IWDG_WriteAccessCmd(0x5555);//關閉寫保護:IWDG->KR = 0x5555;


    IWDG_SetPrescaler(pre_scaler_value);//分頻因子為4,參數由main函數傳參傳進來,預分頻值為64,(4==100),   IWDG->PR = 4, 即:IWDG->PR的bit[2]bit[1]bit[0]分別為100


    IWDG_SetReload(reload_value);//配置重裝載值,參數由main函數傳參傳進來,3秒,公式:T(ms) == [(4 * 2^pre_Scaler) * reload] / 40;


    IWDG_ReloadCounter();//第一次喂狗


    IWDG_Enable();//使能看門狗

}


//喂狗API

void feed_iwdg(void)

{

    IWDG_ReloadCounter();//喂狗,使STM32重新加載【IWDG_RLR中的值】到【看門狗計數器里面】。

}


2、直接配置寄存器


/*

    函數功能:初始化獨立看門狗

    函數名:init_iwdg

    返回值:void

    參數:  pre_scaler_value   預分頻值

           reload_value       重裝載數值

 */

void init_iwdg(uint8_t pre_scaler_value, uint32_t reload_value)

{

    /*配置寄存器*/

    IWDG->KR = 0x5555;  //關閉寫保護,可以向IWDG_PR和IWDG_RLR寄存器中寫入數據。

    IWDG->PR = pre_scaler_value;        //配置預分頻因子,4 == 0100,表示與分頻因子為64

    IWDG->RLR = reload_value;               //配置重裝載值,公式:T(ms) == [(4 * 2^pre_Scaler) * reload] / 40;


    /*初始化喂狗一次*/

    IWDG->KR = 0xAAAA;  //第一次喂狗。


    /*啟動看門狗*/

    IWDG->KR = 0xCCCC;  

}


//喂狗API

void feed_iwdg(void)

{

    IWDG->KR = 0xAAAA;//喂狗,使STM32重新加載【IWDG_RLR中的值】到【看門狗計數器里面】。

}


3、main函數


因為寄存器版本和庫函數版本只是初始化配置函數不同,不影響main函數,所以main函數是一樣的。 

main函數中主要實現的功能就是:


while循環檢測是否有按鍵按下,若有,則喂狗

程序如下:


 int main(void)

 {      

    delay_init();            //延時函數初始化    

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);      //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級

    LED_Init();          //初始化與LED連接的硬件接口

    KEY_Init();          //按鍵初始化     

    delay_ms(500);       //延時


    init_iwdg(4,1875);   //初始化看門狗

    LED0=0;              //點亮LED0

    while(1)

    {

        if (KEY_Scan(1))//循環檢測,當按下任何一個按鍵就喂狗一次

        {

            feed_iwdg();

        }

        delay_ms(10);

    };   

}


五、備注


本程序基本是完全照抄正點原子的程序,因為是看了一遍原子哥的程序,然后關掉自己重新寫的,所以一些語句可能不同,但是思路完全一樣,所以想要原版程序的童鞋可以直接去正點原子論壇找找原版。

關鍵字:STM32F1  獨立看門狗  IWDG 引用地址:STM32F1小白系列之四、獨立看門狗(IWDG)

上一篇:stm32正點原子學習筆記(29)獨立看門狗實驗
下一篇:STM32F0x2 IWDG(獨立看門狗)

推薦閱讀

本報記者?翟少輝、吳睿婕??上海?廣州報道? ? ? ? ? ? “中國是我們非常重要的市場。進博會給我們提供了一個向中國客戶展示泛林集團創新技術、高質量服務,及分享行業洞察的絕佳平臺。”半導體設備龍頭企業泛林集團(Lam?Research)全球客戶運營高級副總裁梅國勛(Scott?Meikle)表示,“我們希望借此機會更加緊密地攜手本地客戶與合作伙...
1、PIC單片機振蕩電路中如何選擇晶體?  對于一個高可靠性的系統設計,晶體的選擇非常重要,尤其設計帶有睡眠喚醒(往往用低電壓以求低功耗)的系統。這是因為低供電電壓使提供給晶體的激勵功率減少,造成晶體起振很慢或根本就不能起振。這一現象在上電復位時并不特別明顯,原因時上電時電路有足夠的擾動,很容易建立振蕩。在睡眠喚醒時,電路的擾...
專注于引入新品的全球電子元器件授權分銷商貿澤電子 (Mouser Electronics) 宣布與音頻芯片行業的知名供應商ESS Technology簽署了全球分銷協議。簽約之后,系統設計人員便可輕松獲取ESS面向家用、移動、汽車和發燒友市場的各種音頻芯片產品組合。 貿澤電子分銷的ESS Technology產品組合包含SABRE和SABRE PRO數模轉換器 (DAC)。ESS推出的發燒級DAC可為用...
據網絡設備制造商消息人士稱,使用成熟工藝節點制造的芯片,特別是電源管理IC、MOSFET和Wi-Fi芯片,預計到2022年年中之前仍將供應短缺。據《電子時報》報道,啟碁科技董事長Haydn Hsieh表示,IC元件短缺影響了其整體設備和解決方案的生產和發貨,導致其今年起到目前的營收和利潤低于預期。Haydn Hsieh稱,PMIC、MOSFET和Wi-Fi芯片供應不足,促使客戶更積...

史海拾趣

問答坊 | AI 解惑

ATmega16(L)簡易并行編程器

;說明: ; 用于沒有燒寫ATmega16并行編程器的朋友,初用ATmega16的工程師在串行 ;編程時寫錯熔絲位,及加密位,造成不能再應用串行編程,構成不便,沒并行 ;編程將無法再使用,做了一個簡易的并行編程器(很簡單,用萬能板搭焊即可), ; ...…

查看全部問答∨

PTC熱敏電阻經典應用

    PTC熱敏電阻PTC是Positive Temperature Coefficient 的縮寫,意思是正的溫度系數,泛指正溫度系數很大的半導體材料或元器件.通常我們提到的PTC是指正溫度系 數熱敏電阻,簡稱PTC熱敏電阻.PTC熱敏電 阻是一種典型具有溫度敏感性的半導體 ...…

查看全部問答∨

FPGA設計中復位方式的選擇

FPGA設計中有同步復位,有異步復位,兩種復位方式各自有什么有缺點。歡迎大家各抒意見!…

查看全部問答∨

鋰電池(一節)保護板設計附原理圖

對于鋰電池的保護,其方案有很多種,IC芯片也有很多種,現在指針對一節鋰電保護板設計介紹如下 一、電池保護板的原理 在鋰離子電池使用過程中,為避免使用者的錯誤使用而造成電池升溫,電池內電解液的分解而產生氣體使其內壓上升,金屬鋰等的釋出而 ...…

查看全部問答∨

自己寫了一個控制PWM輸出的程序,可是在示波器上沒有結果,求幫助

#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> unsigned int Flash=0; void Port_init()    //端口初始化 {         PORTB=0X0F;         DDRB ...…

查看全部問答∨

Co2 變送器

大家好,誰有用GE6613 co2 傳感器做的變送器 485輸出的資料,或者說明書,產品型號是F2000-TSM-co2的說明書和485通訊。發一份我,謝謝! zhjie13@163.com、…

查看全部問答∨

手把手教你用STM32F4 dsp庫 做FFT

M4的板子買了好久 :(被坑了 186買的 傷心 之前想玩一下FPU 可惜那個DSP庫看不懂 也找不到教程  我研究了2個晚上總算會用那個FFT了.... 我的環境是 IAR 6.2 板子是STM32F4DISCOVERY 第一 首先下載官方的   STM32F4xx_DSP_S ...…

查看全部問答∨

關于51單片機C語言的一些問題

語句:sibt dula=P2^6;//申明U1鎖存器的鎖存端 程序中有賦值語句:dula=1; 然后P2^6就輸出1,為啥?dula與P2^6指向同一地址?求指導…

查看全部問答∨

2013年清單分析 11樓做調過飛行器,值得借鑒

本帖最后由 paulhyde 于 2014-9-15 03:32 編輯 直入主題,不廢話。 首先2013與2011年競賽清單對比 2013年 1. 基本儀器清單60MHz雙通道數字示波器100MHz雙通道數字示波器低頻信號發生器(1Hz~1MHz)標準高頻信號發生器(1MHz~100MHz,可輸出 ...…

查看全部問答∨

如何使用函數發生器疊加信號源

將兩個頻率不同、幅度不同的正弦信號疊加在一起的時候,函數發生器的兩個通道應該是串聯起來,還是并聯起來。根據電路原理,電壓源不能并聯,所以應該是串聯起來。我用multisim進行仿真的時候,把兩個函數發生器并聯起來,軟件會報錯。但是,實際操 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 五常市| 揭东县| 开化县| 乌鲁木齐县| 波密县| 蒙自县| 利川市| 类乌齐县| 泗阳县| 长子县| 兰州市| 英超| 丽江市| 神木县| 安溪县| 雅江县| 仪征市| 灵川县| 巴楚县| 疏附县| 年辖:市辖区| 舞钢市| 宝鸡市| 平潭县| 鲁甸县| 金山区| 二连浩特市| 宣武区| 大城县| 林芝县| 彭山县| 万全县| 商洛市| 城步| 天镇县| 邢台县| 扬中市| 廊坊市| 大兴区| 五台县| 宜都市|