历史上的今天
返回首页

历史上的今天

今天是:2025年04月06日(星期日)

2021年04月06日 | STM32之独立看门狗实验

2021-04-06 来源:eefocus

实验现象:

开始LED1亮,LED2熄灭,若不隔时间按KEY1则发现LED2因独立看门狗的作用使系统复位而不断闪烁,若间断的按KEY1则发现LED2不会闪烁,表明没有复位。


实验平台:

基于STM32F103C8T6的彩屏开发板


操作步骤:

1)向IWDG_KR 写入0X5555。

通过这步,我们取消IWDG_PR 和IWDG_RLR 的写保护,使后面可以操作这两个寄存器。

设置 IWDG_PR 和IWDG_RLR 的值。

这两步设置看门狗的分频系数,和重装载的值。由此,就可以知道看门狗的喂狗时间(也

就是看门狗溢出时间),该时间的计算方式为:

Tout=((4×2^prer) ×rlr) /40

其中Tout 为看门狗溢出时间(单位为ms);prer 为看门狗时钟预分频值(IWDG_PR 值),

范围为0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值);

比如我们设定 prer 值为4,rlr 值为625,那么就可以得到Tout=64×625/40=1000ms,这样,

看门狗的溢出时间就是1s,只要你在一秒钟之内,有一次写入0XAAAA 到IWDG_KR,就不会导致看门狗复位(当然写入多次也是可以的)。这里需要提醒大家的是,看门狗的时钟不是准

确的40Khz,所以在喂狗的时候,最好不要太晚了,否则,有可能发生看门狗复位。

2)向IWDG_KR 写入0XAAAA。

通过这句,将使STM32 重新加载IWDG_RLR 的值到看门狗计数器里面。也可以用该命令

来喂狗。

3)向IWDG_KR 写入0XCCCC。

通过这句,来启动 STM32 的看门狗。注意IWDG 在一旦启用,就不能再被关闭!想要关

闭,只能重启,并且重启之后不能打开IWDG,否则问题依旧,所以在这里提醒大家,如果不

用IWDG 的话,就不要去打开它,免得麻烦。

通过上面 3 个步骤,我们就可以启动STM32 的看门狗了,使能了看门狗,在程序里面就

必须间隔一定时间喂狗,否则将导致程序复位。利用这一点,我们通过一个LED 灯来指

示程序是否重启,来验证STM32 的独立看门狗。


程序部分代码:

watchdong.h

#ifndef WATCHDOG_H

#define WATCHDOG_H

void WatchDog_Init(u8, u16);//申明看门狗的初始化函数

void WatchDog_Feed(void);//申明喂狗的函数

#endif


watchdong.c

#include"common.h"

#include"watchdog.h"

//看门狗初始化,参数:prer-分频,reld-计数器重装载值

void WatchDog_Init(u8 prer, u16 reld)

{

IWDG->KR=0x5555; //允许访问PR和RLR寄存器

IWDG->PR=prer;//设置分频

IWDG->RLR=reld; //设定计数器初值

IWDG->KR=0xaaaa; //初次装初值

IWDG->KR=0xcccc;//启动看门狗定时器

}

//喂狗

void WatchDog_Feed(void)

{

IWDG->KR=0xaaaa;

}

该代码就2 个函数,void IWDG_Init(u8 prer,u16 rlr)是独立看门狗初始化函数,就是按照

上面介绍的步骤来初始化独立看门狗的。该函数有2 个参数,分别用来设置与预分频数与重装

寄存器的值的。通过这两个参数,就可以大概知道看门狗复位的时间周期为多少了。其计算方

式上面有详细的介绍,这里不再多说了。

void IWDG_Feed(void)函数,该函数用来喂狗,因为STM32 的喂狗只需要向键值寄存器写

入0XAAAA 即可,

主函数

#include

#include"common.h"

#include"led.h"

#include"key.h"

#include"watchdog.h"

int main(void)

{

u8 temp2;

Stm32_Clock_Init(9); //系统时钟设置

delay_init(72); //延时初始化

LED_Init(); //LED初始化

KEY_Init();

WatchDog_Init(4,625); //看门狗初始化

LED1=1;

LED2=0;

while(1)

{

temp2=KEY_Scan(); //读取按键值

if(temp2==1)

WatchDog_Feed(); //喂狗


}

}


推荐阅读

史海拾趣

Gold Peak Group公司的发展小趣事
对操作人员进行必要的培训,使其了解控制电路的工作原理、操作方法和安全注意事项。
DESIGNERSYSTEMS公司的发展小趣事

DESIGNERSYSTEMS公司的创始人在电子行业有着深厚的背景和独特的见解。他们发现市场上缺乏一种能够集成多种功能、高度定制化的电子设备设计解决方案。于是,他们创立了DESIGNERSYSTEMS,专注于提供从概念到原型再到量产的全方位设计服务。通过不断的技术创新和对市场需求的精准把握,DESIGNERSYSTEMS迅速在电子行业树立了自己的品牌形象,赢得了客户的信赖。

BOCA公司的发展小趣事

随着国内市场的饱和,BOCA公司开始将目光投向海外市场。公司首先在欧洲和北美设立了分公司,通过本地化运营和营销策略,成功打开了这些市场。随后,BOCA又陆续在亚洲、非洲等地区设立了分支机构,形成了全球化的销售网络。国际化战略的实施不仅为BOCA带来了更广阔的市场空间,也提升了公司的品牌影响力和国际竞争力。

Cables To Go公司的发展小趣事

随着电子设备的普及和互联网的发展,Cables To Go公司看到了巨大的市场潜力。公司积极拓展销售渠道,通过线上电商平台和线下实体店相结合的方式,将产品销往全国各地。此外,公司还积极开拓国际市场,与多个国家和地区的代理商建立了合作关系,进一步扩大了市场份额。这种跨越式的市场拓展策略为公司的快速发展奠定了坚实的基础。

High Voltage Semiconductor Inc公司的发展小趣事

美高测的起源可以追溯到上世纪80年代末,当时电力工程师斯坦利·珀希尔(虚构对应美高测创始人)在父亲的高压设备公司中工作,积累了深厚的高压测试技术经验。1992年,他带着对高压测试技术的深刻理解,从Hipotronics公司独立出来,创立了美高测。公司初期便专注于研发更高效、更安全的高压测试设备,特别是在交流串联谐振技术和C低频技术上的突破,为公司在高压半导体测试领域奠定了坚实的基础。

倍思特(BEST)公司的发展小趣事

为了更好地服务全球客户,美高测积极寻求与国际知名企业的合作。通过与半导体制造巨头台积电、英特尔等公司的合作,美高测不仅获得了先进的制造技术和市场洞察能力,还成功将其高压测试产品打入了这些巨头的供应链体系。同时,公司还与多个国家的科研机构建立了长期合作关系,共同开展前沿技术的研发和应用,进一步提升了公司的国际影响力。

问答坊 | AI 解惑

音乐彩灯控制器设计

好心的大哥大姐帮帮小弟吧 马上就要答辩了 谢谢大家 可以发到我的邮箱里wen3634111@sina.com…

查看全部问答>

关于逻辑中断

在CE5 中,比如现在BSP中的 keypb 已经对 EINT0中断 进行了处理。 那么可不可以 再写个驱动 对于EINT0 进行处理。调用KernelIoControl 老是失败。 static UINT32 g_EINTIrq = INTSRC_EINT0; static UINT32 g_EINTSysIntr = SYSINTR_UNDEFINED; Ke ...…

查看全部问答>

有做ARM-Linux下AD模数转换驱动的吗?

有做ARM-Linux下AD模数转换驱动的吗?遇到一些问题,想众位大侠请教!!!…

查看全部问答>

多台主机共用一台显示器 有什么好招吗

市场上卖的那个切换的叫什么东西来着?呵,第一次碰到这种问题哈,以前都是见到一台主机用多个显示器来着的。 比较急,哪位大哥可以详细的说明一下。以及设备的价格?感激不尽…

查看全部问答>

以下代码为2410 BOOTLODER中的一段,请解释一下

        IMPORT  |Image$$RO$$Base|        ; Base of ROM code         IMPORT  |Image$$RO$$Limit|  ; End of ROM code (=start of ROM data) & ...…

查看全部问答>

请热心的坛友们多多帮助新手

感觉新手发布的帖子很少被关注,新手的求助很少有人提供帮助。知道大家都很忙,但是还是请高手们挤出点时间,多帮助帮助我们这些新手。在这个充满爱心的论坛,让不管是新手还是高手,都感觉到家一样的温暖!谢谢大家!…

查看全部问答>

2812读cpld出现数据不稳定,请教

请教达人: 我设计的设备采用总线插槽的方式,除电源板、DSP板卡外还有5个扩展板卡,其中2个输出3个输入,每个板卡上均有cpld,cpld实现简单的译码功能。DSP读输入板卡时发现: 1、3块输入cpld板卡都插上时,dsp循环读各输入板卡数据,从ccs窗口 ...…

查看全部问答>

【我给XILINX资源中心做贡献】Xilinx FPGA EDK开发实例

【我给XILINX资源中心做贡献】Xilinx FPGA EDK开发实例…

查看全部问答>