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

歷史上的今天

今天是:2024年09月12日(星期四)

正在發生

2019年09月12日 | 秉火429筆記之十二 看門狗

發布者:代碼漫游者 來源: eefocus關鍵字:秉火  看門狗  IWDG 手機看文章 掃描二維碼
隨時隨地手機看文章

1. 概述

STM32有兩個看門狗,一個是獨立看門狗,另外一個是窗口看門狗,獨立看門狗號稱寵物狗,窗口看門狗號稱警犬。


一般情況下,使用頻次較高是獨立看門狗,也即是通常意義的看門狗。


2. 獨立看門狗(IWDG)

一個12位的遞減計數器,最大值為0XFFF,當計數器的值從某個值一直減到0的時候,系統就會產生一個復位信號,即IWDG_RESET。如果在計數沒減到0之前,刷新了計數器的值的話,那么就不會產生復位信號,這個動作就是我們經常說的喂狗。看門狗功能由 VDD 電壓域供電,在停止模式和待機模式下仍能工作.

看門狗時鐘

獨立看門狗的時鐘由獨立的RC振蕩器LSI提供,即使主時鐘發生故障它仍然有效,非常獨立。LSI的頻率一般在30~60KHZ之間,根據溫度和工作場合會有一定的漂移,我們一般取40KHZ,所以獨立看門狗的定時時間并一定非常精確,只適用于對時間精度 要求比較低的場合。


計數器時鐘

遞減計數器的時鐘由LSI經過一個8位的預分頻器得到,我們可以操作預分頻器寄存器IWDG_PR來設置分頻因子,分頻因子可以是:[4,8,16,32,64,128,256,256],計數器時鐘CK_CNT= 40/ 4*2^PRV,一個計數器時鐘計數器就減一。


鍵寄存器

image.png

一旦獨立看門狗啟動,它就關不掉,只有復位才能關掉


應用場景

獨立看門狗一般用來檢測和解決由程序引起的故障。


PS:  可以在系統上電開始的時候檢查是否因看門狗引起的復位【RCC_GetFlagStatus(RCC_FLAG_IWDGRST)】


代碼實例

/*

 * 設置 IWDG 的超時時間

 * Tout = prv/40 * rlv (s)

 *      prv可以是[4,8,16,32,64,128,256]

 * prv:預分頻器值,取值如下:

 *     @arg IWDG_Prescaler_4: IWDG prescaler set to 4

 *     @arg IWDG_Prescaler_8: IWDG prescaler set to 8

 *     @arg IWDG_Prescaler_16: IWDG prescaler set to 16

 *     @arg IWDG_Prescaler_32: IWDG prescaler set to 32

 *     @arg IWDG_Prescaler_64: IWDG prescaler set to 64

 *     @arg IWDG_Prescaler_128: IWDG prescaler set to 128

 *     @arg IWDG_Prescaler_256: IWDG prescaler set to 256

 *

 * 獨立看門狗使用LSI作為時鐘。

 * LSI 的頻率一般在 30~60KHZ 之間,根據溫度和工作場合會有一定的漂移,我

 * 們一般取 40KHZ,所以獨立看門狗的定時時間并一定非常精確,只適用于對時間精度

 * 要求比較低的場合。

 *

 * rlv:預分頻器值,取值范圍為:0-0XFFF

 * 函數調用舉例:

 * IWDG_Config(IWDG_Prescaler_64 ,625);  // IWDG 1s 超時溢出 

 * (64/40)*625 = 1s

 */

 

void bsp_IWDG_Config(uint8_t prv ,uint16_t rlv)

{

// 使能 預分頻寄存器PR和重裝載寄存器RLR可寫

IWDG_WriteAccessCmd( IWDG_WriteAccess_Enable );

// 設置預分頻器值

IWDG_SetPrescaler( prv );

// 設置重裝載寄存器值

IWDG_SetReload( rlv );

// 把重裝載寄存器的值放到計數器中

IWDG_ReloadCounter();

// 使能 IWDG

IWDG_Enable();

}

 

// 喂狗

void bsp_IWDG_Feed(void)

{

// 把重裝載寄存器的值放到計數器中,喂狗,防止IWDG復位

// 當計數器的值減到0的時候會產生系統復位

IWDG_ReloadCounter();

}

3. 窗口看門狗(WWDG)

窗口看門狗跟獨立看門狗一樣,也是一個遞減計數器不斷的往下遞減計數,當減到一個固定值0X40時還不喂狗的話,產生復位,這個值叫窗口的下限,是固定的值,不能改變。這個是跟獨立看門狗類似的地方,不同的地方是窗口看門狗的計數器的值在減到某一個數之前喂狗的話也會產生復位,這個值叫窗口的上限,上限值由用戶獨立設置。窗口看門狗計數器的值必須在上窗口和下窗口之間才可以喂狗,這就是窗口看門狗中窗口兩個字的含義.


窗口看門狗時鐘

窗口看門狗時鐘來自PCLK1,PCLK1最大是45M,由RCC時鐘控制器開啟。


計數器時鐘和計數器

計數器時鐘由CK計時器時鐘經過預分頻器分頻得到,分頻系數由配置寄存器CFR的位8:7 WDGTB[1:0]配置,可以是[0,1,2,3],其中CK計時器時鐘=PCLK1/4096,計數器的時鐘CNT_CK=PCLK1/4096/(2^WDGTB)。


計數器是一個遞減計數器,共有7位,其值存在控制寄存器CR的位6:0,即T[6:0],當7個位全部為1時是0X7F,這個是最大值,當遞減到T6位變成0時,即從0X40變為0X3F時候,會產生看門狗復位。計數器的值只能是:0X40~0X7F之間,實際上用來計數的是T[5:0]。當遞減計數器遞減到0X40的時候,還不會馬上產生復位,如果使能了提前喚醒中斷:CFR位9 EWI 置1,則產生提前喚醒中斷,如果真進入了這個中斷的話,就說明程序肯定是出問題了, 那么在中斷服務程序里面我們就需要做最重要的工作,比如保存重要數據,或者報警等,這個中斷我們也叫它死前中斷。


應用場景

WWDG一般被用來監測,由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運行序列而產生的軟件故障。


PS:  可以在系統上電開始的時候檢查是否因看門狗引起的復位【RCC_GetFlagStatus(RCC_FLAG_WWDGRST)】


代碼實例

//用于記錄看門狗 遞減計數器的值,方便喂狗函數直接使用

static uint8_t m_bsp_wwdg_cnt ;

 

// WWDG 中斷優先級初始化

static void bsp_WWDG_NVIC_Config(void)

{

  NVIC_InitTypeDef NVIC_InitStructure; 

  

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 

  NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure);

}

 

 

 

 

/* WWDG 配置函數

 * tr :遞減計時器的值, 取值范圍為:0x7f~0x40,超出范圍會直接復位

 * wr :窗口值,取值范圍為:0x7f~0x40

 * prv:預分頻器值,取值可以是

 *      @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1(45MHz)/4096)/1  約10968Hz 91us

 *      @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1(45MHz)/4096)/2 約5484Hz 182us

 *      @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1(45MHz)/4096)/4 約2742Hz 364us

 *      @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1(45MHz)/4096)/8  約1371Hz 728us

 *      

 * 例:tr = 127(0x7f,tr的最大值)  wr = 80(0x50, 0x40為最小wr最小值)  prv =  WWDG_Prescaler_8

 * ~728 * (127-80) = 34.2ms < 刷新窗口 < ~728 * 64 = 46.6ms

 * 也就是說調用WWDG_Config進行這樣的配置,若在之后的34.2ms前喂狗,系統會復位,在46.6ms后沒有喂狗,系統也會復位。

 * 需要在刷新窗口的時間內喂狗,系統才不會復位。

*/

void bsp_WWDG_Config(uint8_t tr, uint8_t wr, uint32_t prv)

{

m_bsp_wwdg_cnt = tr;//保存CNT配置,用在喂狗函數

// 開啟 WWDG 時鐘

RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);

// 設置預分頻器的值

WWDG_SetPrescaler( prv );

// 設置上窗口值

WWDG_SetWindowValue( wr );

// 設置計數器的值,使能WWDG

WWDG_Enable(tr);

// 清除提前喚醒中斷標志位

WWDG_ClearFlag();

// 配置WWDG中斷優先級

bsp_WWDG_NVIC_Config();

// 開WWDG 中斷

WWDG_EnableIT();

}

 

// 喂狗

void bsp_WWDG_Feed(void)

{

// 喂狗,刷新遞減計數器的值,設置成最大WDG_CNT=0X7F

WWDG_SetCounter( m_bsp_wwdg_cnt );

}


關鍵字:秉火  看門狗  IWDG 引用地址:秉火429筆記之十二 看門狗

上一篇:秉火429筆記之十五 DMA--直接存儲區訪問
下一篇:秉火429筆記之十一 Systick--滴答定時器

推薦閱讀

電機的加減速為了,電機啟動停止更加穩定,提高勻速速度。S曲線算法優化電機的運行。整個過程就是,模仿S曲線設置電機的頻率程序采用,通過s_curve()函數映射一張小于1500個點的表, 輸出一次pwm方波,中斷一次,計數器step計數一次 ,TIM_SetAutoreload()重新設置arr頻率。S曲線函數,加速和減速同理,返回值是表的個數uint16_t _stepmotor_calc(uint1...
當前汽車的傳感器融合傳感器融合這一概念涵蓋所有類型的傳感器。典型的例子是將前置攝像頭和前置雷達提供的信息融合。攝像頭只能在可見光譜下工作,不適用于雨天、濃霧、太陽眩光和黑暗等環境,但是在識別顏色(如道路標記)方面具有高度可靠性。而雷達即使在低分辨率下,也可用于探測距離,并且環境條件對雷達沒有太大影響。 將前置攝像頭和雷達傳感器融...
近日,華為正式發布《華為核心網自動駕駛網絡白皮書》,在業界率先提出了面向5G的核心網自動駕駛網絡的理念、目標和構架,為5G核心網向自動駕駛網絡演進提供了一條可衡量、可實踐的指導性路徑。近年來,智能駕駛汽車已成為汽車領域發展的新趨勢,越來越多的汽車采用了輔助駕駛系統(ADAS)和自動駕駛系統,這類系統利用車載的移動數據中心(MDC)和車載傳感器...
跌落神壇的“掃地茅”還能重回巔峰嗎?8月27日,科沃斯(603486.SH)發布2021年半年報顯示,上半年營收53.59億元,同比增長123.11%;凈利8.50億元,同比增長543.25%。盡管業績亮眼,但二級資本市場似乎并不買單。科沃斯在8月30日、31日連續大幅下跌,跌幅分別為10%、7.35%。5倍的凈利潤增長,為何沒有提振“掃地茅”的股價?在「不二研究」看來...

史海拾趣

問答坊 | AI 解惑

一種新穎的電子式PS壓力傳感器

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 編輯 一看到傳感器字樣,想是以后用的到,先收藏,呵呵 概述 ---PS壓力傳感器是一種利用半導體膜片結構制成的電子式壓力傳感器,它可將空氣壓力這一物理量變換成電信號, 并能夠高精度、線性地檢測 ...…

查看全部問答∨

抗反射、防眩光陽光下可視液晶顯示器WEDC AMLCD

ENH064V1-300/450/600 尺寸大小: 6.4" 分辨率: VGA 640 x 480 接口: 6-bits TTL interface 亮度 : 350/450/600nit(cd/m2) 顯示模式:Normally White 響應時間:Rise 30ms/ Fall 50ms 功耗:5.6/5.6/8.5W 工作溫度:0℃---+55℃ 儲藏溫度:-25 ...…

查看全部問答∨

誰來指導下我的畢設該怎么寫啊?

我很努力的做畢設,倒了最后看見我的畢設題目卻盲目了... 題目是《基于STR750的硬件設計》還有一個人是軟件設計 題目要求是:要求學生學習嵌入式開發硬件平臺知識、軟件知識。對已有的技術資料進行消化整理,以STR750為核心硬件完成一款有創意的 ...…

查看全部問答∨

MQ-3酒精傳感器中文資料

MQ-3酒精傳感器中文資料,有需要的,可以下載了。…

查看全部問答∨

Proteus7.6完美版--破解+漢化

Proteus7.6完美版--破解+漢化 很多朋友說破解了以后不能用,我看了一下,確實如此,我又到網上搜了一下,搜到這個Proteus_7.6_SP4_0.96_,我試了一下,元件能放上去了,大家可以試一下 下面是這個破解文件,請一定按照read me 文件里的說明進行操 ...…

查看全部問答∨

探秘中國IC設計公司發展迷局(一) 

2000年到2009年十年間,中國的IC設計公司的命運跌宕起伏。十年來,始終沒有一家IC公司能夠在中國市場扛起旗幟,可謂是各領風騷一二年。天天談芯 成立于1999年10月的中星微電子,除了CMOS數碼圖像處理芯片“星光N號”取得成功,公司依靠“星光中國 ...…

查看全部問答∨

usb鍵盤驅動的問題,驅動了等于沒驅動,郁悶!!!!!

usb鍵盤的驅動按道理來說,在menuconfig選上HID就可以了 我的問題是,在/dev/下壓根就沒有input,還要手動mkdir /dev/input 然后,mknod /dev/input/kbd c 13 64 問題來了,這下 如果 cat /dev/input/kbd ,按鍵盤是可以看到信息,但是,console ...…

查看全部問答∨

一個關于延時的程序問題?(C,左值)沒看懂,請高手指教。

這段程序,俺不知道為什么會有延時功能,按俺的想法,是沒辦法實現了。菜鳥一只,先謝謝各位了 程序如下://-------------------------------------------------- // Description  : Hold program for 0 ~ 65535 ms // Input Value ...…

查看全部問答∨

如何正確使用電位器來調節音量(續)

    當音源信號接到滑動端,有兩點不妥:     1、使得音源信號的輸出負載發生改變。見圖,                    &n ...…

查看全部問答∨

TI wiki

目前,TI許多文檔都已經放在wiki上http://processors.wiki.ti.com/index.php/Main_Page 大家可以去看看。…

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 昌邑市| 卢湾区| 东方市| 赣榆县| 安阳市| 青龙| 高碑店市| 台湾省| 项城市| 循化| 汨罗市| 固阳县| 菏泽市| 临泽县| 北票市| 平乐县| 五家渠市| 永胜县| 丽江市| 扎赉特旗| 新邵县| 芦山县| 三江| 杭锦旗| 公主岭市| 通许县| 湘阴县| 丰城市| 湖南省| 长寿区| 美姑县| 信阳市| 巩义市| 淮安市| 涞水县| 晋城| 铁岭县| 东宁县| 调兵山市| 泗阳县| 鸡东县|