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

獨立看門狗的一點經驗

發布者:EnchantedBreeze最新更新時間:2024-06-18 來源: elecfans關鍵字:獨立看門狗  stm32  看門狗芯片 手機看文章 掃描二維碼
隨時隨地手機看文章

stm32基本都內置兩種看門狗(另外還有外置的看門狗芯片),窗口看門狗和獨立看門狗,兩種看門狗的使用方法和應用場景各不相同,今天主要講講最常用的獨立看門狗(工作這么多年,沒見誰用過窗口看門狗,這種估計在時序嚴格的場合會用上)。

所謂獨立(Independent watchdog),就是該看門狗有獨立的時鐘源供看門狗使用,VIP專屬。這樣即使程序跑飛,或者主時鐘掛掉,照樣運行。但是精度嘛,你懂的(VIP用戶一般比較飄)。

所謂看門狗,外形雖然不像(一堆電子電路,肯定不像),但行為真的狗,還是一條瘋狗。為啥這么說呢?

這只狗一定要在規定以內的時間(這個時間自己設置)喂食,超出一點都不行,否則就咬人(復位整個程序,讓你的人生重新來過)

但是瘋狗用的好,就是一條專業的好狗,比誰都敬業(雖然會有點飄哈,因此喂狗的時間不能卡太死,需要有充足的余量)。所以絕大部分產品都會用上看門狗,以防意外情況發生,可以有重頭再來的機會。

但是喂狗也有方法,不能隨便喂,不然狗的行為就不專業了(該復位的時候不復位)。所以需要專業的調教。

比如,喂狗的地方一般只有一個地方,并且是一定會執行的。

裸機時,一般放主循環while(1)里面定時執行(沒必要太頻繁)。

RTOS時,一般放在優先級最低的任務中執行,或者空閑任務中(使用鉤子函數)。

千萬千萬不要在中斷處理程序中喂狗,因為可能你的主程序已經跑死,中斷還好好的運行呢(如果要用中斷觸發,可以在中斷處理程序中只設置一個變量標志位,然后在另外位置判斷標志位決定是否喂狗)。

但是看門狗只是一個預防措施,而不是一個正常行為,因此開發過程中,一定要關注看門狗是否出現復位現象,只要出現一次,都要揪出問題的根本原因,否則到了市場上一定會復位的。

引起程序復位的原因有很多種,比如上電、掉電,那么如何看是否由看門狗引起的呢?有個寄存器是可以看到具體原因的,比如stm32f1 (其他的可以自己查手冊)

image.png

代碼實現:


hw_cpu_reset_flag_t hw_cpu_reset_get(void)

{

    hw_cpu_reset_flag_t temp = {.value = 0};// 自定義的一個結構變量,方便使用


    if(RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)

    {

       temp.flag.power = 1;

    }

    if(RCC_GetFlagStatus(RCC_FLAG_LPWRRST)!= RESET)

    {

       temp.flag.low_power = 1;

    }

    if(RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET)

    {

       temp.flag.pin_reset = 1;

    }

    if(RCC_GetFlagStatus(RCC_FLAG_SFTRST)!= RESET)

    {

       temp.flag.software_reset = 1;

    }  

    if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)

    {

       temp.flag.independent_dog = 1;

    }

    if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST)!= RESET)

    {

       temp.flag.window_dog = 1;

    }

    

    RCC_ClearFlag();//清除RCC中復位標志


    return temp;

}

另外在調試過程中,我們可以一開始就禁用看門狗(一般在調試寄存器中)比如


DBGMCU_Config (DBGMCU_IWDG_STOP, ENABLE);

這樣即使程序因調試而長時間暫停,也不會產生復位,否則看門狗復位,會影響調試。


需要注意的是,即使在在線調試環境下,一旦全速運行,如果程序喂狗不及時,仍然會引起復位(這也是我們希望的,可以在調試過程中發現喂狗是否有問題)


如果我們的代碼已經下載到單片機,但又沒用設置該位,如果你采用魚鷹之前介紹的抓現場環境的方法(關鍵字 顛覆認知),那么也可能會引起看門狗的復位,因此我們既可以在寄存器界面手動設置(看你手速快不快,能不能在復位前設置),也可以通過 *.ini 文件設置該寄存器完成(建議使用該方法,不用拼手速,哈哈)


*.ini 禁用看門狗:


_WWORD (0xE0042004, 0x100); // 注意該代碼會將其它位清零。可以采用下面這種方式

//

DEFINE int temp;

temp = _RWORD (0xE0042004); // CSR address

temp |= 0x100;

_WWORD (0xE0042004, temp);


關鍵字:獨立看門狗  stm32  看門狗芯片 引用地址:獨立看門狗的一點經驗

上一篇:總結一下定時器的幾種輸出比較模式
下一篇:怎樣去解決Keil編譯的速度越來越慢的問題呢

推薦閱讀最新更新時間:2025-06-30 01:52

獨立看門狗的理解
IWDG_PR 和 IWDG_RLR 寄存器具有寫保護功能。 在寄存器IWDG_KR中, 寫入0xCCCC,開始啟用獨立看門狗;此時計數器開始從其復位值 0xFFF 遞減計數。當計數器計數到末尾 0x000 時,會產生一個復位信號(IWDG_RESET)。 寫入 0xAAAA, IWDG_RLR 中的值就會被重新加載到計數器中從而避免產生看門狗復位 。 寫入 0x5555。將其他值寫入這個寄存器將會打亂操作順序,寄存器將重新被保護。重裝載操作(即寫入 0xAAAA)也會啟動寫保護功能。 1 )取消寄存器寫保護(向 IWDG_KR 寫入 0X5555 ) 通過這步,我們取消 IWDG_PR
[單片機]
STM32一文通(8) 串口通訊
一.原生串口通訊 原生的串口通信主要是控制器跟串口的設備或者傳感器通信,不需要經過電平轉換芯片來轉換電平,直接就用TTL電平通信 比如: GPS模塊、GSM模塊、串口轉WIFI模塊、HC04藍牙模塊 二. 串口與PC通訊 USB轉串口主要用于設備跟電腦通信 電平轉換芯片一般有CH340、PL2303、CP2102、FT232 使用的時候電腦端需要安裝電平轉換芯片的驅動 三. RS232標準串口通訊 RS232標準串口主要用于工業設備直接通信 電平轉換芯片一般有MAX3232,SP3232 四. STM32串口 1. 內部結構 寄存器 功能 TX 數據發送 RX 數據接收 SC
[單片機]
STM32 assert_param
在STM32的固件庫和提供的例程中,到處都可以見到assert_param()的使用。如果打開任何一個例程中的stm32f10x_conf.h文件,就可以看到實際上assert_param是一個宏定義;在固件庫中,它的作用就是檢測傳遞給函數的參數是否是有效的參數。 所謂有效的參數是指滿足規定范圍的參數,比如某個參數的取值范圍只能是小于3的正整數,如果給出的參數大于3,則這個assert_param()可以在運行的程序調用到這個函數時報告錯誤,使程序員可以及時發現錯誤,而不必等到程序運行結果的錯誤而大費周折。 這是一種常見的軟件技術,可以在調試階段幫助程序員快速地排除那些明顯的錯誤。 它確實在程序的運行上犧牲了效率(但只
[單片機]
STM32 SPI
SPI 是英語 Serial Peripheral interface 的縮寫,顧名思義就是串行外圍設備接口。是 Motorola首先在其 MC68HCXX 系列處理器上定義的。 SPI 接口主要應用在 EEPROM, FLASH,實時時鐘,AD 轉換器,還有數字信號處理器和數字信號解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為 PCB 的布局上節省空間,提供方便,正是出于這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議,STM32 也有 SPI 接口。 SPI 接口一般使用 4 條線通信: MISO 主設備數據輸入,從設備數據輸出。 MOSI 主設備數據
[單片機]
STM32 Step-by-Step如何加快開發速度
STM32 Step-by-Step是第一個旨在通過提供分步初學者指南,讓所有愛好者和專業人士都能使用我們的 STM32 開發平臺和微控制器 (MCU) 的舉措。這個由五部分組成的教程將引導用戶安裝開發人員對其 STM32 嵌入式系統進行編程所需的基本工具,例如STM32CubeMX和TrueStudio IDE等等。使用NUCLEO-L476RG或STM32L4 探索套件物聯網節點 (B-L475E-IOT01A)例如,它將教讀者如何設置他們的 MCU,啟動閃爍的燈光應用程序,然后介紹關鍵概念,例如 UART、傳感器和使用藍牙的移動應用程序。因此,用戶獲得的知識和經驗遠遠超出了粗略的介紹,因為它為他們提供了啟動個人和復雜項目所需
[單片機]
stm32單片機入門c語言解析
關于學習stm32單片機建議 推薦學習書籍: 《STM32F103xxx參考手冊》不需要全部閱讀——沒有時間的。建議選讀,但是前幾章必讀。存儲器和總線架構、電源控制、備份寄存器、復位和時鐘控制,通用和復用功能I/O,中斷和時間等等前幾章一定要花時間閱讀。后面章節,講述的是具體的功能模塊設計。如果我們用到哪個模塊,就可以去閱讀哪個模塊。 《STM32固件庫使用手冊》主要是為了簡化編程 學習思路(僅供參考) 步驟一,安裝完STM32學習的軟件,比如J-Link、Keil for ARM(MDK)、ISP(如果需要從串口下載的話)。 步驟二,挑選部分例程的HEX,比如LED燈的例程HEX文件,下載到芯達STM32開發板中,觀察兩個L
[單片機]
STM32中C語言的基礎知識
C語言是單片機開發中的必備基礎知識,本文列舉了部分STM32學習中比較常見的一些C語言基礎知識,希望能對大家有所幫助。 01位操作 下面我們先講解幾種位操作符,然后講解位操作使用技巧。C語言支持以下六種位操作: (六種位操作) 下面,重點講解一下位操作在單片機開發中的一些實用技巧。 1.1 在不改變其他位的值的狀況下,對某幾個位進行設值。 這個場景在單片機開發中經常使用,方法就是我們先對需要設置的位用&操作符進行清零操作,然后用 | 操作符設值。 比如,我要改變GPIOA的狀態,可以先對寄存器的值進行&清零操作: 然后再與需要設置的值進行|或運算: 1.2 移位操作提高代碼的可讀性。 移位操
[單片機]
<font color='red'>STM32</font>中C語言的基礎知識
STM32 MCU的技術特點和應用前景
引言: 隨著物聯網和智能家居的快速發展,微控制器單元(Microcontroller Unit,MCU)在各種電子產品和系統中扮演著重要角色。作為一種高度集成的芯片,MCU結合了中央處理器(Central Processing Unit,CPU)、隨機存取存儲器(Random Access Memory,RAM)、Flash存儲器以及其他周邊設備。本文將介紹STM32 MCU的技術特點和應用前景。 一、STM32 MCU概述: STM32系列微控制器是由意法半導體(STMicroelectronics)公司開發的。該系列MCU基于ARM Cortex-M內核,具有高性能、低功耗、高集成度和易用性等特點。它們廣泛應用于汽車、醫療
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 丰宁| 临安市| 吉隆县| 讷河市| 炉霍县| 友谊县| 巴楚县| 海伦市| 龙里县| 香河县| 泸州市| 阿拉善右旗| 石家庄市| 通辽市| 屯门区| 东至县| 神农架林区| 桐乡市| 平定县| 河源市| 子洲县| 海原县| 新闻| 正镶白旗| 札达县| 青海省| 大兴区| 晋中市| 阿尔山市| 轮台县| 基隆市| 高雄市| 澄迈县| 盐源县| 会泽县| 九龙县| 永嘉县| 湟中县| 洛阳市| 长岛县| 安义县|