【STM32—寄存器版本】独立看门狗实验

整体思路

  • 有一只柯基犬,它非常贪吃,只要一小时之内它没有吃到肉骨头,就会不干活,所以我们必须得不断给它喂吃的,一旦未肉骨头的间隔超过了一小时,那么柯基就会摇摇屁股说:“这门我不看了!”
    以上就是本次实验的思想,我们让 LED0 亮起,通过不断点击按键来给它喂食,让它持续亮着,如果超时没有按下,那他就会熄灭。

主要代码

main函数部分

#include "sys.h"
#include "usart.h"  
#include "delay.h" 
#include "led.h" 
#include "key.h" 
#include "wdg.h"
int main(){
 Stm32_Clock_Init(9);
 delay_init(72);
 LED_Init();
 delay_ms(72);
 uart_init(72,9600);
 KEY_Init();
 IWDG_Init(4,625);//溢出时间=(4*2^分频系数*重装载的值)
 LED0=0;
 while(1){
 if(KEY_Scan(0)==WKUP_PRES){
 IWDG_Feed();
 }
 delay_ms(10);
 }
}

wdg.c

#include "wdg.h"
#include "led.h"
void IWDG_Init(u8 prer,u16 rlr){//狗狗预备出动函数
  LED0=0;
 IWDG->KR=0X5555;//使能对IWDR->PR和IWDR->RLR的写
 IWDG->PR=prer;//设置分频系数
 IWDG->RLR=rlr;//从加载寄存器
 IWDG->KR=0XAAAA;//重载(喂狗)
 IWDG->KR=0XCCCC;//狗狗出动!
 LED0=0;
}
void IWDG_Feed(void){//一键喂狗函数
 IWDG->KR=0XAAAA;
}

wdg.h

#ifndef _WDG_H
#define _WDG_H
#include "sys.h"
void IWDG_Init(u8 prer,u16 rlr);
void IWDG_Feed(void);
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值