在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32入門學習筆記之看門狗實驗(下)

jf_78858299 ? 來源:滑小稽筆記 ? 作者:電子技術園地 ? 2023-02-16 11:27 ? 次閱讀

14.4.2 窗口看門狗實驗

功能:程序一運行使得接在PB5上的LED1亮300ms后關閉,進入死循環。等待WWDG中斷的到來,在中斷里面,喂狗,并對PE5上的LED2進行翻轉操作。可以看到LED2不停的閃爍,LED1只在剛啟動的時候閃一下。

(1)在上一個實驗的wdg.h文件的函數列表區域添加以下代碼。

void WWDG_Init( u8 tr, u8 wr, u8 fprer ) ; //窗口看門狗初始化

(2)在上一個實驗的wdg.c文件末尾添加以下代碼。

/***************************************************
Name    :WWDG_IRQHandler
Function  :窗口看門狗中斷服務程序
Paramater  :None
Return    :None
***************************************************/
void WWDG_IRQHandler()
{
  WWDG->CR = 0x7F ;                                          //重設置7位計數器
  WWDG->SR = 0x00 ;                                          //清除提前喚醒中斷標志位
  LED2 != LED2 ;
}
/***************************************************
Name    :WWDG_Init
Function  :窗口看門狗初始化
Paramater  :
      tr:計數器值
      wr:窗口值
      fprer:分頻系數
Return    :None
***************************************************/
void WWDG_Init( u8 tr, u8 wr, u8 fprer )
{
  RCC->APB1ENR |= 1<<11 ;                                        //使能wwdg時鐘
  WWDG->CFR |= fprer<<7 ;    //PCLK1/4096再除2^fprer
  WWDG->CFR &= 0xFF80 ;
  WWDG->CFR |= wr ;                                          //設定窗口值
  WWDG->CR |= tr&0x7F ;                                        //設定計數器值
  WWDG->CR |= 1<<7 ;                                          //開啟看門狗
  NVIC_Init( 2, 3, WWDG_IRQn, 2 ) ;                                  //搶占2,子優先級3,組2
  WWDG->SR = 0x00 ;                                          //清除提前喚醒中斷標志位
  WWDG->CFR |= 1<<9 ;                                          //使能提前喚醒中斷
}

注:由于在中斷服務函數中引用了LED2,所以需要添加頭文件#include “led.h”。

(3)創建led.h文件,并輸入以下代碼。

#ifndef _LED_H_
#define _LED_H_


#include "sys.h"
/*********************************************************************************************************
                  硬    件    端    口
*********************************************************************************************************/
#define LED1  PBout( 5 )                                        //定義LED1端口
#define LED2  PEout( 5 )                                        //定義LED2端口
/*********************************************************************************************************
                  函    數    列    表
*********************************************************************************************************/
void LED_Init( void ) ;                                          //LED初始化


#endif

(4)創建led.c文件,并輸入以下代碼。

#include "led.h"


/***************************************************
Name    :LED_Init
Function  :LED初始化
Paramater  :None
Return    :None
***************************************************/
void LED_Init()
{
  RCC->APB2ENR |= 1<<3 ;
  GPIOB->CRL &= 0xFF0FFFFF ;
  GPIOB->CRL |= 0x00300000 ;

  RCC->APB2ENR |= 1<<6 ;
  GPIOE->CRL &= 0xFF0FFFFF ;
  GPIOE->CRL |= 0x00300000 ;

  LED1 = 1 ;
  LED2 = 1 ;
}

(5)在1.c文件中輸入以下代碼。

#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "led.h"
#include "wdg.h"
/***************************************************
Name    :main
Function  :主函數
Parameter  :None
Return    :None
***************************************************/
int main()
{
  STM32_Clock_Init( 9 ) ;                                        //STM32時鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LED_Init() ;                                            //LED初始化
  LED1 = 0 ;                                              //點亮DS0
  delay_ms( 300 ) ;                                          //延時300ms,讓人可以看到DS0亮的狀態
   WWDG_Init( 0x7F, 0x5F, 3 ) ;                                    //計數器值為7f,窗口寄存器為5f,分頻數為8
  while( 1 )
  {
    LED1 = 1 ;                                            //熄滅LED1
  }
}

14.5 為何STM32要同時存在窗口看門狗與獨立看門狗

14.5.1 獨立看門狗的使用條件

(1)程序跑飛

(2)出現死循環

(3)睡眠與休眠不合理

(4)外部主晶振損壞

(5)需要重新復位,且不保留任何數據

14.5.2 窗口看門狗使用條件

(1)軟件邏輯出現錯誤

(2)死機或者死循環

(3)軟件執行不按預期效果執行

(4)軟件需要重新復位,但是保留所有數據

14.5.3 兩者的區別

(1)獨立看門狗使用內部專用40kHz低速時鐘

窗口看門狗則使用PCLK1的時鐘

(2)獨立看門狗沒有中斷,超時直接復位

窗口看門狗有中斷,超時可以在中斷服務函數中操作或者喂狗

(3)獨立看門狗一般用于避免程序跑飛或者死循環

窗口看門狗則是為了避免程序不按照預先設定的邏輯執行

(4)獨立看門狗是12位遞減操作

窗口看門狗則是6位遞減操作
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6040

    文章

    44592

    瀏覽量

    636827
  • 看門狗
    +關注

    關注

    10

    文章

    565

    瀏覽量

    70874
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356733
  • 計數器
    +關注

    關注

    32

    文章

    2259

    瀏覽量

    94802
  • 定時器
    +關注

    關注

    23

    文章

    3254

    瀏覽量

    115067
收藏 人收藏

    評論

    相關推薦

    STM32中的獨立看門狗和窗口看門狗是什么

    在早期的MCU中是沒有看門狗這種東西的,所以產品就很容易出現死機,跑飛的情況。為了避免這種情況的出現,后期的MCU都集成了看門狗的功能。但是目前看門狗發展到今天基本上分為兩大類:獨立看門狗
    的頭像 發表于 02-20 17:47 ?2797次閱讀
    <b class='flag-5'>STM32</b>中的獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>是什么

    STM32_獨立看門狗程序

    STM32 獨立看門狗程序,很好的學習資料,快來下載吧
    發表于 02-15 17:08 ?25次下載

    ALIENTEK_MINISTM32_實驗5_獨立看門狗實驗

    ALIENTEK MINISTM32 實驗5 獨立看門狗實驗,很好的資料,快來學習
    發表于 02-18 14:58 ?6次下載

    ALIENTEK_MINISTM32_實驗6_窗口看門狗實驗

    ALIENTEK MINISTM32 實驗6 窗口看門狗實驗,很好的資料,快來學習
    發表于 02-18 14:58 ?4次下載

    stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么

    本文為您講解STM看門狗時間計算(時限)與頻率計算,獨立看門狗和窗口看門狗的特性、區別與聯系。
    發表于 10-10 10:41 ?8788次閱讀

    什么是stm32看門狗?獨立看門狗和窗口看門狗工作原理解析

    stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。 獨立看門狗
    的頭像 發表于 11-06 11:48 ?2.8w次閱讀
    什么是<b class='flag-5'>stm32</b><b class='flag-5'>看門狗</b>?獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>工作原理解析

    STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

    stm32自帶兩個看門狗模塊,獨立看門狗IWDG和窗口看門狗WWDG。看門狗主要作用是可用來檢測和解決由軟件錯誤引起的故障;當計數器達到給定
    發表于 11-09 17:17 ?8465次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>看門狗</b>配置(獨立<b class='flag-5'>看門狗</b>IWDG和窗口<b class='flag-5'>看門狗</b>WWDG)

    STM32看門狗配置詳情解說

     stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。獨立看門狗有自己獨立的40Khz時鐘,不存
    發表于 11-13 11:17 ?4486次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>看門狗</b>配置詳情解說

    獨立看門狗實驗-IWDG-M3

    關于STM32獨立看門狗實驗文檔
    發表于 11-27 15:30 ?3次下載

    基于STM32、FreeRTOS 實現硬件看門狗+軟件看門狗監測多任務的方法

    基于STM32、FreeRTOS實現硬件看門狗+軟件看門狗監測多任務的方法
    的頭像 發表于 03-12 10:11 ?9474次閱讀

    stm32看門狗的特點是什么

    stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。
    的頭像 發表于 07-22 11:08 ?4088次閱讀

    MCU學習筆記_IWDG獨立看門狗

    MCU學習筆記IWDG獨立看門狗1. IWDG獨立看門狗概述2. 寄存器和HAL庫函數配置3. 實例1. IWDG獨立看門狗概述
    發表于 10-28 20:21 ?9次下載
    MCU<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>_IWDG獨立<b class='flag-5'>看門狗</b>

    STM32學習心得十六:獨立看門狗實驗

    記錄一,方便以后翻閱~主要內容:1) 獨立看門狗概述;2) 常用寄存器和庫函數配置;3) 獨立看門狗實驗代碼解讀。官方資料:《STM32
    發表于 12-27 18:44 ?6次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學習</b>心得十六:獨立<b class='flag-5'>看門狗</b><b class='flag-5'>實驗</b>

    STM32:獨立看門狗、窗口看門狗的配置

    STM32單片機的看門狗有獨立看門狗和窗口看門狗之分,這兩者的工作原理卻完全不同。
    發表于 02-08 16:15 ?18次下載
    <b class='flag-5'>STM32</b>:獨立<b class='flag-5'>看門狗</b>、窗口<b class='flag-5'>看門狗</b>的配置

    STM32中的獨立看門狗和窗口看門狗

    一、前言 在早期的MCU中是沒有看門狗這種東西的,所以產品就很容易出現死機,跑飛的情況。為了避免這種情況的出現,后期的MCU都集成了看門狗的功能。但是目前看門狗發展到今天基本上分為兩大類:獨立
    的頭像 發表于 12-22 16:58 ?2190次閱讀
    主站蜘蛛池模板: 欧美一级特黄乱妇高清视频| 欧美精品成人久久网站| 中文字幕国产一区| 日本最色网站| 色多多在线播放| 欧美性aaa| 日本在线视频二区| 成人中文在线| 好大好硬好深好爽的视频| 欧美黄色片视频| 精品亚洲大全| 视频网站黄色| 国产性夜夜春夜夜爽| 午夜激情福利视频| 五月天婷婷丁香花| 欧美黄色免费网站| 手机在线观看免费视频| 日本三级黄在线观看| 亚洲综合欧美日本另类激情| 色在线视频播放| 久久青草精品免费资源站| 97av在线| 一级大片免费看| 久久久久久国产精品免费免| 天天夜天天干| 天天做天天做天天综合网| 免费在线观看a视频| 欧美老汉色| 在线看黄网| 777奇米影音| а8天堂资源在线官网| 一区二区三区高清视频在线观看| 中文天堂最新版在线精品| 四虎成人免费影院网址| 色在线国产| 久久9精品| 国产精品免费观看网站| 天天插天天插天天插| 手机看片1024精品日韩| 夜色321看片资源站| www.亚洲成人|