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

歷史上的今天

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

2021年12月22日 | STM32看門狗--窗口看門狗

發布者:HarmonySpirit 來源: eefocus關鍵字:STM32  看門狗  窗口看門狗 手機看文章 掃描二維碼
隨時隨地手機看文章

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

 

獨立看門狗是限制喂狗時間在0-x內,x由你的相關寄存器決定。喂狗的時間不能過晚。

窗口看門狗,所以稱之為窗口就是因為其喂狗時間是一個有上下限的范圍內,你可以通過設定相關寄存器,設定其上限時間和下限時間。喂狗的時間不能過早也不能過晚。

圖1

 

窗口看門狗的

上窗口就是配置寄存器WWDG->CFR里設定的W[6:0];

下窗口是固定的0x40;

當窗口看門狗的計數器在上窗口值之外,或是低于下窗口值都會產生復位。

圖2

 

 

&& 上窗口的值可以只有設定,7位二進制數最大只可以設定為127(0x7F),最小又必須大于下窗口的0x40,所以其取值范圍為64~127(即:0x40~0x7F);

 

&& 配置寄存器WWDG->CFR中為計數器設定時鐘分頻系數,確定這個計數器可以定時的時間范圍,從而確定窗口的時間范圍。

 

&& 窗口看門狗的時鐘來自于PCLK1,在時鐘配置中,其頻率為外部時鐘經倍頻器后的二分頻時鐘,即為36MHz,根據手冊可以知道其定時時間計算方法:

      

上窗口時間:T_min = 4096 * (2^WDGTB)*(WWDG_CR[6:0] - WWDG_CFR[6:0])/36 (us)

 

下窗口時間: T_max = 4096 * (2^WDGTB)*(WWDG_CR[6:0] - 0x40)/36 (us)

 

36Mhz下相關窗口看門狗的喂狗時間范圍:

WDGTB(計數器分頻值)最早喂狗時間/us最晚喂狗時間/ms

0                         113              7.28

1                         227              14.56

2                         455              29.12

3                         910              58.25

 

本例直接寄存器實現4種測試模式,測試窗口看門狗的復位原理。

MODE_1 0   // 在30ms時喂狗,在窗口范圍內喂狗,LED燈閃爍

MODE_2 0   // 在10ms時喂狗,在窗口范圍外導致復位,LED燈常亮

MODE_3 0   // 在100ms時喂狗,在窗口范圍外喂狗導致復位

MODE_4 1   // 主函數不執行喂狗,開啟提前喚醒中斷,在WWDG中斷函數中喂狗

庫函數實現在提前喚醒中斷中,喂狗操作,PA4口LED正常閃爍。當外部中斷發生(按下PA0按鍵),長時間不喂狗,引發窗口看門狗復位。

 

直接操作寄存器

 

相關寄存器如下:

控制寄存器WWDG->CR:低8位有效。

第8位為WDGA,看門狗激活位。低7位[6:0]為看門狗計數器的計數值。

 

配置寄存器WWDG->CFR:低十位有效。

第10位為EWI:提醒喚起中斷。此位置1,當計數器值到達0x40時,將產生中斷。

第8,9位WDGTB:為計數器分頻系數設置為:

00: CK計時器時鐘(PCLK1除以4096)除以1     01: CK計時器時鐘(PCLK1除以4096)除以2

10: CK計時器時鐘(PCLK1除以4096)除以4     11: CK計時器時鐘(PCLK1除以4096)除以8

低7位[6:0]:為窗口值。

 

int main(void)

{

#ifdef DEBUG

  debug();

#endif

 

  /* System Clocks Configuration ---------------------------------------------*/

  RCC_Configuration();

    

  /* GPIO configuration ------------------------------------------------------*/

  GPIO_Configuration();

 

  /*注釋-hope:利用窗口看門狗的提前喚醒中斷服務子程序來進行獨立看門狗計數值的

       重載,每次重載一次計數值LED2就閃爍一次。*/

  /* Check if the system has resumed from WWDG reset -------------------------*/

  if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST) != RESET)

  { /* WWDGRST flag set */

    /* Turn on led connected to PC.06 */

    GPIO_WriteBit(GPIOC, GPIO_Pin_6, Bit_SET);

 

       /* Clear reset flags */

    RCC_ClearFlag();

  }

  else

  { /* WWDGRST flag is not set */

    /* Turn off led connected to PC.06 */

    GPIO_WriteBit(GPIOC, GPIO_Pin_6, Bit_RESET);

  }

 

  /* Configure EXTI Line9 to generate an interrupt on falling edge -----------*/

  EXTI_Configuration();

 

/* NVIC configuration --------------------------------------------------------*/

  NVIC_Configuration();

 

/* WWDG configuration --------------------------------------------------------*/

  /* Enable WWDG clock */

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);

 

   /*   This parameter can be one of the following values:

       * @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1

       * @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2

       * @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4

       * @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8

 

/* WWDG clock counter = (PCLK1/4096)/8 = 244 Hz (~4 ms) ---PCLK1=8MHZ */

 

  WWDG_SetPrescaler(WWDG_Prescaler_8);

 

  /* Set Window value to 0x41 ---設置上窗口邊界值*/

  WWDG_SetWindowValue(0x41);

 

  /* Enable WWDG and set counter value to 0x7F,  0x7f-0x41=64 --WWDG timeout = ~4 ms * 64 = 262 ms */

/*看門狗計數器的計數值0x7F---結合上面上窗口邊界,計數值從ox7f遞減到0x40*/

  WWDG_Enable(0x7F);

 

  /* Clear EWI flag */

  WWDG_ClearFlag();

 

  /* Enable EW interrupt */

  WWDG_EnableIT();

 

  while (1)

  {

  }

}

 

 

/******按鍵的優先級為0高于窗口看門狗的優先級1*****/

void NVIC_Configuration(void)

{

  NVIC_InitTypeDef NVIC_InitStructure;

 

  /* 2 bits for Preemption Priority and  2 bits for Sub Priority */

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

 

  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure);

 

  NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQChannel;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

  NVIC_Init(&NVIC_InitStructure);

}

 

 

void EXTI_Configuration(void)

{

  EXTI_InitTypeDef EXTI_InitStructure;

 

  /* Connect EXTI Line9 to PB.9 */

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);

 

  /* Configure EXTI Line9 to generate an interrupt on falling edge */

  EXTI_ClearITPendingBit(EXTI_Line9);

  EXTI_InitStructure.EXTI_Line = EXTI_Line9;

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿有效

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;

  EXTI_Init(&EXTI_InitStructure);

}

 

在Stm32f10x_it.c文件中:

 

void WWDG_IRQHandler(void)

{

  /* Update WWDG counter */

  WWDG_SetCounter(0x7F);

      

  /* Clear EWI flag */

  WWDG_ClearFlag();

 

  /* Toggle led connected to PC.07 */

  GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)));

}

 

/********按鍵中斷處理程序********/

//注意:這里中斷函數里沒有清中斷標志的操作,這會導致窗口看門狗的提前喚醒中斷

          無法進入,最終導致因無法重載看門狗計數器而系統復位;

void EXTI9_5_IRQHandler(void)

{

  if(EXTI_GetITStatus(EXTI_Line9) != RESET)

  {  

    /* Turn off led connected to PC.07 */

       GPIO_WriteBit(GPIOC, GPIO_Pin_7, Bit_RESET);

 

       /* As EXTI line9 pending bit is not cleared, the CPU will execute indefinitely

          this ISR and when the WWDG counter falls to 3Fh the WWDG reset occurs */

  }

}


關鍵字:STM32  看門狗  窗口看門狗 引用地址:STM32看門狗--窗口看門狗

上一篇:STM32F429--I2C通信(讀寫EEPROM,串口返回測試數據)
下一篇:STM32F429--系統滴答定時器

推薦閱讀

小時候看《機動戰士高達》這部動畫片的時候,被動畫里的高達深深吸引。可以變身的高達機甲,瞬間就成了當時最熱門的周邊玩具。看著玩具店里的高達模型,皮卡皮暗暗發誓:一定要攢錢給自己買一個。然后這個愿望實現了三分之一,我發了個誓。畢竟小時候并沒有那么多的零花錢,對于皮卡皮來說當初的五毛錢都可以說是一筆巨款,想要攢錢買高達,還是做夢比較快...
據媒體報道,中國企業綜合調查報告顯示,為應對勞動成本的快速上升的挑戰,企業加快推進了生產的智能化升級,機器人正在生產活動中扮演越來越重要的角色。 報告中指出,機器人在企業勞動力的比重從2008年的12%提升至2017年的37%,表明中國約有40%的制造業勞動力人口已受到機器人使用的潛在影響。 使用機器人的企業占比在2015年為8.1%,2017年增長至13....
10 月,vivo 在國內推出了 vivo Y3s 和 vivo Y30 手機。不過,近日又有一款名為 vivo Y30 標準版的新手機在國內正式上市。之前的 vivo Y30 搭載驍龍 460 芯片,而新發布的 vivo Y30 標準版手機則搭載 Helio P35 芯片,并配有 6GB 的 LPPDR4x 內存和 128GB 的內置存儲空間。vivo Y30 標準版配備 6.51 英寸的 IPS 屏幕,帶有...
中國儲能網訊:傳統電力系統支撐新能源高比例安全并網的消納能力、滿足用戶側多元化用能需求的互動能力、“源網荷儲”各環節高效運行的協同能力和電力與其他能源系統的互濟能力都需要進一步提升。 以新能源為主體的新型電力系統到底“新”在何處?現有電力系統將面臨怎樣的變革和挑戰?哪些關鍵技術將為新型電力系統保駕護航?在2021年中國電機工程學會...

史海拾趣

問答坊 | AI 解惑

無線電遙控報警器

這是本人的畢業設計圖,效果還蠻不錯的,給大家分享一下。…

查看全部問答∨

關于PID調節的一點資料跟大家分享下

關于PID調節的一點資料跟大家分享下,希望大家多討論…

查看全部問答∨

如何實現wince多用戶?

如題,各用戶要有自己的注冊表信息和密碼等信息!…

查看全部問答∨

關于PXA270的AC97采集電壓問題

各位:    CPU為PXA270,采集電壓芯片為WM9712 ,通過AC-LINK采集電壓 一共有兩處用到:         1、觸摸屏,         2、電池當前電壓 問題:     正常情 ...…

查看全部問答∨

[求教]使用單片機解決UDP傳輸問題

小弟使用的是C8051F020芯片 以太網接口芯片是CP2201 由于開發使用芯片自帶的庫文件 函數和socket有些類似 程序基本實現將從PC收到的數據再次傳回去 發送發送一段時間后(10ms或100ms) 單片機將不收數據了 不知道是什么原因?…

查看全部問答∨

藍牙虛擬串口問題

已經用 RegisterDevice注冊設備成功 CreateFile虛擬串口成功 現在用GetCommState和SetCommState設置串口狀態時返回錯誤為2250,經查為\"This network connection does not exist. \" 再問一下\"PORTEMUPortParams\"的通道可以隨機設定嗎?…

查看全部問答∨

STM32用串口調試助手收不到數據

STM32可以編譯包括運行,但是收不到數據。很郁悶。 公司臺式電腦沒串口,用的是USB轉串口,相當于虛擬串口,串口調試助手,是用COM3口。下述程序可以運行,LED也會閃,但是串口調試助手上就是收不到數據。 請幫忙看看,十分感謝! 附近 ...…

查看全部問答∨

請問 2401 能用JTAG 燒寫和調試嗎???謝謝

             大家好,我按著TI的資料做了一塊2401的板子,做出來后不要說用來做調試了,就是連都不能連上.接下來的工作根本無法進行.后來找JTAG的資料來研究,發現EUM0和EUM1是用來作為接收來自仿真器的中斷 ...…

查看全部問答∨

關于320F28035實現并口的問題?<時鐘問題續集>

    我用這個28035運行其他的程序能夠運行,應該說明系統時鐘應該能夠支持系統的運行。 但是我現在在做一個28035+TOPWAY 的液晶屏的顯示就是顯示不出來。    以前我在MSP430F149上已經實現了。這次只是換到DSP28035上就 ...…

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 当涂县| 安福县| 鸡东县| 平果县| 芦溪县| 广西| 孟州市| 镇沅| 永济市| 蓝山县| 攀枝花市| 柏乡县| 闽侯县| 兴义市| 达日县| 祁连县| 苗栗县| 正定县| 辽阳市| 东乌珠穆沁旗| 自贡市| 盐亭县| 井研县| 来宾市| 浠水县| 邹平县| 绥棱县| 泊头市| 青海省| 新津县| 山东省| 东宁县| 敦煌市| 益阳市| 海宁市| 镶黄旗| 柯坪县| 绍兴县| 拉萨市| 祁东县| 突泉县|