久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3054|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[零基礎(chǔ)學(xué)習(xí)STM32]第七講:WWDG看門(mén)狗實(shí)驗(yàn)—復(fù)位ARM

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:278743 發(fā)表于 2018-3-12 16:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 kkhkbb 于 2018-3-13 08:40 編輯

一、概述
1、  WWDG看門(mén)狗簡(jiǎn)介
       IWDG看門(mén)狗存在這樣一個(gè)問(wèn)題,如果在喂狗的間隔期間,程序跑飛后又正確歸位,獨(dú)立看門(mén)狗無(wú)法發(fā)現(xiàn)這樣的錯(cuò)誤,程序?qū)⒋嬖诤艽蟮奈kU(xiǎn)。與IWDG看門(mén)狗不同,WWDG看門(mén)狗需要在一個(gè)規(guī)定的時(shí)間范圍內(nèi)喂狗才有效,這樣可以較為有效的解決IWDG看門(mén)狗存在的問(wèn)題。可以根據(jù)WWDG看門(mén)狗通常被用來(lái)監(jiān)測(cè)由外部干擾或不可預(yù)見(jiàn)的邏輯條件造成的應(yīng)用程序背離正常的運(yùn)行序列而產(chǎn)生的軟件故障。
2、  WWDG看門(mén)狗窗口說(shuō)明
       WWDG看門(mén)狗在使用時(shí),除了使能時(shí)鐘和設(shè)置預(yù)分頻值外,還需要設(shè)置窗口和計(jì)數(shù)器初值。在芯片內(nèi)部,WWDG看門(mén)狗計(jì)數(shù)器是一個(gè)7位二進(jìn)制遞減計(jì)數(shù)器,當(dāng)它從0x40翻轉(zhuǎn)到0x3F時(shí),系統(tǒng)會(huì)啟動(dòng)復(fù)位。只有計(jì)數(shù)器在窗口值和0x40之間的時(shí)候,喂狗才是有效的。如圖7_0所示:
                          圖7_0 WWDG工作原理圖
二、硬件電路
                           圖7_1 按鍵引腳
                             圖7_2 按鍵
      iCore3雙核心開(kāi)發(fā)板中,采用一個(gè)獨(dú)立的按鍵與STM32F407PH15相連,限流電阻為1K
三、實(shí)驗(yàn)原理
      本次實(shí)驗(yàn)使用的是常開(kāi)帶復(fù)位按鍵,從硬件電路上可以看出,當(dāng)按鍵沒(méi)有按下時(shí),ARM芯片的ARM_KEY引腳讀取到的值是高電平,按鍵按下后讀取到的值為低電平,按鍵沒(méi)有按下是正常喂狗,當(dāng)按鍵按下后停止喂狗。
四、主函數(shù)
1.主函數(shù)
  1. //--------------------------- Variable --------------------------//
  2. unsigned long int time_delay = 0;
  3. //--------------------- Function Prototype ----------------------//
  4. static void delay(unsigned long int ms);
  5. //--------------------------- Function --------------------------//
  6. /*
  7. * Name                : main
  8. * Description         : ---
  9. * Author              : ysloveivy.
  10. *
  11. * History
  12. * --------------------
  13. * Rev                 : 0.00
  14. * Date                : 11/21/2015
  15. *
  16. * create.
  17. * --------------------
  18. */
  19. int main(void)
  20. {
  21.         int i;
  22.         for(i = 0;i < 10000000;i++);
  23.         led.initialize();
  24.         key.initialize();
  25.         systick.initialize();
  26.         wwdg.initialize();
  27.         LED_RED_ON;
  28.         while(1){
  29.                 while(!KEY_INPUT);
  30.                 delay(30);                                 //30ms喂狗
  31.                 wwdg.feed_dog();
  32.         }
  33. }
  34. /*
  35. * Name                : delay
  36. * Description         : ---
  37. * Author              : ysloveivy.
  38. *
  39. * History
  40. * --------------------
  41. * Rev                 : 0.00
  42. * Date                : 11/21/2015
  43. *
  44. * create.
  45. * --------------------
  46. */
  47. static void delay(unsigned long int ms)
  48. {
  49.         time_delay = ms;
  50.         while(time_delay != 0);
  51. }
復(fù)制代碼
2.WWDG初始化及喂狗代碼
  1. /*
  2. * Name               : initialize
  3. * Description        : ---
  4. * Author             : ysloveivy.
  5. *
  6. * History
  7. * -------------------
  8. * Rev                : 0.00
  9. * Date               : 11/21/2015
  10. *
  11. * create.
  12. * -------------------
  13. */
  14. static int initialize(void)
  15. {
  16.         //21.06ms 49.9ms之間喂狗
  17.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);             //使能窗口看門(mén)狗時(shí)鐘
  18.         WWDG_SetPrescaler(WWDG_Prescaler_8);                             //設(shè)置預(yù)分頻值
  19.         WWDG_SetWindowValue(100);                                        //設(shè)置窗口值
  20.         WWDG_Enable(127);                                                //設(shè)置計(jì)數(shù)器初值,并使能窗口看門(mén)狗

  21.         return 0;
  22. }
  23. /*
  24. * Name               : feed_dog
  25. * Description        : ---
  26. * Author             : ysloveivy.
  27. *
  28. * History
  29. * -------------------
  30. * Rev                : 0.00
  31. * Date               : 11/21/2015
  32. *
  33. * create.
  34. * -------------------
  35. */
  36. static void feed_dog(void)
  37. {
  38.         WWDG_SetCounter(127);                                            //重置計(jì)數(shù)器,喂狗
  39. }
復(fù)制代碼
3.系統(tǒng)滴答定時(shí)器中斷
  1. /*
  2. * Name               : SysTick_Handler
  3. * Description        : ---
  4. * Author             : ysloveivy.
  5. *
  6. * History
  7. * -------------------
  8. * Rev                : 0.00
  9. * Date               : 11/21/2015
  10. *
  11. * create.
  12. * -------------------
  13. */
  14. void SysTick_Handler(void)
  15. {
  16.         static int counter = 0;
  17.         if((counter ++ % 1000) == 0){
  18.                 systick.second_flag = 1;
  19.         }
  20.         time_delay --;
  21. }
復(fù)制代碼
五、實(shí)驗(yàn)現(xiàn)象
      iCore3 雙核心板紅色 LED 常亮,當(dāng)按鍵一直按下,看門(mén)狗一直復(fù)位 ARM,紅燈閃爍。
六、代碼包下載
      網(wǎng)盤(pán):http://pan.baidu.com/s/1qWEK7fQ

iCore3_7_WWDG.rar

909.11 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 狠狠狠 | 国产www在线 | 久久久国产一区 | 一区二区精品 | 女同久久另类99精品国产 | 久久久久久黄 | 日韩视频在线一区 | 国产精品成人av | 91精品国产一区二区三区香蕉 | 国产一区二区三区在线看 | 91久久精品国产 | 国产最新精品视频 | 另类视频区 | 精品九九九 | 麻豆精品国产91久久久久久 | av色站| 精品产国自在拍 | 另类一区 | 亚洲精品在线免费播放 | 欧美另类视频在线 | 亚洲精品国产综合区久久久久久久 | 在线中文视频 | 91高清在线视频 | 午夜电影网| 成人精品在线观看 | 超碰日本| 久久久av一区 | 久久性av | 伊人免费在线观看 | 中文一区二区视频 | 99婷婷 | 久久久无码精品亚洲日韩按摩 | 在线免费看黄 | 亚洲成人a v| 中文字幕黄色大片 | 免费国产视频在线观看 | 每日更新av | 日本久久综合 | 亚洲精品福利视频 | 免费看黄色片 | 精品www |