STM32
直播中

恩可口

8年用户 756经验值
私信 关注
[问答]

如何去实现一种基于独立看门狗及按键的LED亮灭的设计

如何去实现一种基于独立看门狗及按键的LED亮灭的设计?怎样去编写其代码?

回帖(1)

刘彦妤

2021-9-23 15:45:35
  整体思路
  有一只柯基犬,它非常贪吃,只要一小时之内它没有吃到肉骨头,就会不干活,所以我们必须得不断给它喂吃的,一旦未肉骨头的间隔超过了一小时,那么柯基就会摇摇屁股说:“这门我不看了!”
  以上就是本次实验的思想,我们让 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
举报

更多回帖

发帖
×
20
完善资料,
赚取积分