【STM32】窗口看门狗 WWDG 实验代码详解
生活随笔
收集整理的這篇文章主要介紹了
【STM32】窗口看门狗 WWDG 实验代码详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- main.c
- wwdg.c
- wwdg.h
main.c
#include "led.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "wwdg.h"int main(void){delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優先級分組2uart_init(9600);LED_Init(); LED0=0;delay_ms(300); WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8); while(1){LED0=1; } }wwdg.c
#include "wwdg.h" #include "led.h"//保存WWDG計數器的設置值,默認為最大. u8 WWDG_CNT=0x7f;void WWDG_Init(u8 tr,u8 wr,u32 fprer) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG時鐘使能WWDG_SetPrescaler(fprer);設置IWDG預分頻值WWDG_SetWindowValue(wr);//設置窗口值WWDG_Enable(tr); //使能看門狗 , 設置 counter . WWDG_ClearFlag();WWDG_NVIC_Init();//初始化窗口看門狗 NVICWWDG_EnableIT(); //開啟窗口看門狗中斷 } //重設置WWDG計數器的值 void WWDG_Set_Counter(u8 cnt) {WWDG_Enable(cnt); } //窗口看門狗中斷服務程序 void WWDG_NVIC_Init() {NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG中斷NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //搶占2,子優先級3,組2 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //搶占2,子優先級3,組2 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);//NVIC初始化 }void WWDG_IRQHandler(void){// Update WWDG counterWWDG_SetCounter(0x7F); //當禁掉此句后,窗口看門狗將產生復位// Clear EWI flag */WWDG_ClearFlag(); //清除提前喚醒中斷標志位// Toggle GPIO_Led pin 7 */LED1=!LED1;}wwdg.h
#ifndef __WDG_H #define __WDG_H #include "sys.h"void WWDG_Init(u8 tr,u8 wr,u32 fprer);//初始化WWDG void WWDG_Set_Counter(u8 cnt); //設置WWDG的計數器 void WWDG_NVIC_Init(void); #endif總結
以上是生活随笔為你收集整理的【STM32】窗口看门狗 WWDG 实验代码详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【STM32】外部中断实验代码详解
- 下一篇: 【STM32】定时器中断实验代码详解