历史上的今天
今天是:2024年10月29日(星期二)
2019年10月29日 | STM32之独立看门狗 学习笔记
2019-10-29 来源:eefocus
一、独立看门狗概述:
独立看门狗其实就是一个独立于主时钟的定时复位狗。一旦开启独立看门狗,它就会根据自己设定的时间不断倒数,倒数到0后就开始复位。
二、关于喂狗:
喂狗就是让狗去吃东西,分心后,这只狗就得重新倒数。
三、stm32看门狗示例程序:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
void IWDG_Init(u8 prer,u16 rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对寄存器IWDG_PR和IWDG_RLR的写操作
IWDG_SetPrescaler(prer); //设置IWDG预分频值:设置IWDG预分频值为64
IWDG_SetReload(rlr); //设置IWDG重装载值
IWDG_ReloadCounter(); //按照IWDG重装载寄存器的值重装载IWDG计数器
IWDG_Enable(); //使能IWDG
}
int main(void)
{
//延时函数初始化
delay_init()
//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//初始化与LED连接的硬件接口
LED_Init();
//按键初始化
KEY_Init();
delay_ms(500);
//与分频数为64,重载值为625,溢出时间为1s
IWDG_Init(4,625);
//点亮LED0
LED0=0;
while(1)
{
if(KEY_Scan(0)==WKUP_PRES)
{
IWDG_ReloadCounter(); //如果WK_UP按下,则喂狗
}
}
}
从主程序main的第一行开始运行到下面的代码时,开启看门狗
//与分频数为64,重载值为625,溢出时间为1s
IWDG_Init(4,625);
此时,键值寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值 0xFFF 递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号(IWDG_RESET)。
所以我们会看到等一亮一灭。
此时,如果检测到按键按下,那么就会运行喂狗程序:
if(KEY_Scan(0)==WKUP_PRES)
{
IWDG_ReloadCounter(); //如果WK_UP按下,则喂狗
}
喂狗后, 键寄存器 IWDG_KR 中被写入 0xAAAA, IWDG_RLR 中的值就会被重新加载到计数器,也就是对应到初始化设置的计数值,我们设置的1S,那么计数器就将重1s处开始递减,如果我们持续按按键,那么计数器就会持续保持在那个值,不会倒数到0,也就不会产生复位,那么灯就会始终保持亮的状态。
从而验证了看门狗和喂狗的功能。
史海拾趣
|
如题? 是否必须给这个内核打yaffs2的补丁? 哪位大哥有yaffs2源码共享一下。 另外,从哪个内核开始能支持yaffs2而不需要再打补丁?… 查看全部问答> |
|
目录: 第一章 单片微型计算机概述 第二章 MCS-51单片机组成和原理 第三章 MCS-51指令系统 第四章 MCS-51中断系统与定时器/计数器 第五章 8098单片机的结构原理 第六章 8098指令系统 第七章 8098中断、定时器与I/O寄存器 第八章 8098高速 ...… 查看全部问答> |
|
要做一个IAP的系统,将程序分成2部分:boot和AP,boot负责引导系统和更新AP部分的程序,AP部分是实际需要程序。boot程序相当于普通程序,编译后下载到0x8000000开始的地址,中断向量表从0开始。AP的开始地址要在boot部分的后面,比如从0x80080 ...… 查看全部问答> |
|
380转让LM3S8962和LM3S811(TI原厂评估板) 380包邮转让TI LM3S8962,另有LM3S811(100元)转让,LM3S8962板子包装是开过的,板子测试OK,只下过20来次程序,板子很新.LM3S811包装是没有开过的,崭新的TI的原板,因为自己学FPGA,没有时间钻研LM3S8962,所以想转让,本人是学生,没有诚意的勿扰 ...… 查看全部问答> |
|
前不久,公司买了一套real6410的开发板,在调试过程中出现了一些问题,经过查找资料和实验,不断的排查,找了问题的所在。不过声明一下,我这里没有进行系统的测试,问题的真正原因有待深入排查,至少在我这里是解决了一些问题。 开发平台:Real ...… 查看全部问答> |
|
最近在做一个项目,是用fpga配置ad9923a 来驱动 ccd ,型号是icx205al 。配置ad9923a的时序是串口方式配置,由于要配置的寄存器多达140个,每个由12位地址和28位数据总共40位组成 (不足位的补0),里面还有部分需要延时,附上时序图,有哪位 ...… 查看全部问答> |




