当前位置:首页 > 单片机 > 单片机
[导读]看门狗,这个东西在哪都能看见,关于其中简单介绍在我的另一篇博文中有的,那是关于arm11的,不过大体一样http://blog.csdn.net/king_bingge/article/details/8510713一、首先就是独立看门狗直接上操作流程吧1、三个

看门狗,这个东西在哪都能看见,关于其中简单介绍在我的另一篇博文中有的,那是关于arm11的,不过大体一样http://blog.csdn.net/king_bingge/article/details/8510713

一、首先就是独立看门狗

直接上操作流程吧

1、三个比较重要的寄存器:键值寄存器(IWDG_KR)、预分频寄存器(IWDG_PR)、重载寄存器(IWDG_RLR)

向IWDG_KR 写入0X5555:能够去除写保护,方便我们给分频寄存器和重载寄存器进行写操作嘛!不就是类似于DS1302的写保护么。。

2、有一个知识点就是关于看门狗使用的时钟,这里使用的是内部低速时钟40k左右的样子,那么我们就能算出,定时的最大时间了。Tout=40Khz/((4*2^prer )*rlr)

向IWDG_KR 写入0XAAAA:这一步能够将我们写入的这个值重装载到IWDG_RLR这个寄存器中,类似于我们51的定时器!

3、接着就是像IWDG_KR 写入0XCCCC来启动看门狗,同时也就关闭了写保护,防止意外写入。

注意了:每次我们给IWDG_KR 写入0XAAAA的时候,他会自动重新进行喂狗!

二、分析代码

1、 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对寄存器IWDG_PR和IWDG_RLR的写操作,也就是带开写保护了!

不信跟踪进去看一看吧,仅仅尝试这一次,因为之前学arm11裸机的时候,全是操作寄存器的,现在烦了,这也是我第一次分析寄存器吧,反正我还是觉得库函数用着方便

GO GO GO !


voidIWDG_WriteAccessCmd(uint16_tIWDG_WriteAccess)

{

/*Checktheparameters*/

assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess));

IWDG->KR=IWDG_WriteAccess;

}


上面是函数定义;


#defineIWDG((IWDG_TypeDef*)IWDG_BASE)


上面是原型


#defineIWDG_BASE(APB1PERIPH_BASE+0x3000)


这是跟踪到的地址,继续!




#defineAPB1PERIPH_BASEPERIPH_BASE


#definePERIPH_BASE((uint32_t)0x40000000)/*!


好的,反推回去!



IWDG_BASE=0x40000000+0x3000


最后找到这个结构体咯


typedefstruct

{

__IOuint32_tKR;

__IOuint32_tPR;

__IOuint32_tRLR;

__IOuint32_tSR;

}IWDG_TypeDef;


再看芯片手册


0x40003000-0x400033FF独立看门狗(IWDG)

继续跟踪参数。。

#define IWDG_WriteAccess_Enable ((uint16_t)0x5555)


发现了??所以嘛 IWDG->KR = IWDG_WriteAccess;

就是相当于给
寄存器(IWDG_KR )0x40003000 地址写 0x5555。
OK分析完毕,ST32的库函数都是这样组织的,我很喜欢这种形式,开发速度相当快呀!即使有些地方的口碑不太好,但是我们在那部分就可以操作寄存器了,一举两得的事情
2、直接给出初始化代码,有兴趣的自己可以分析,我是没什么兴趣了


voidIWDG_Init(u8prer,u16rlr)

{

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

}


//喂独立看门狗



voidIWDG_Feed(void)

{

IWDG_ReloadCounter();

}


下面看代码吧!

1、直接给初始化函数


voidWWDG_Init(u8tr,u8wr,u32fprer)

{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);//WWDG时钟使能

WWDG_SetPrescaler(fprer);//设置IWDG预分频值

WWDG_SetWindowValue(wr);//设置窗口值

WWDG_Enable(tr);//使能看门狗,设置counter.

WWDG_ClearFlag();

WWDG_NVIC_Init();//初始化窗口看门狗NVIC

WWDG_EnableIT();//开启窗口看门狗中断

}

2、同样也有喂狗函数


//喂狗


voidWWDG_Set_Counter(u8cnt)

{

WWDG_Enable(cnt);

}

3、上面提到了当技术到0x40的时候就会长生中断,那么中断怎么实现?


//窗口看门狗中断服务程序


voidWWDG_NVIC_Init()

{

NVIC_InitTypeDefNVIC_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_Init(&NVIC_InitStructure);//NVIC初始化

}

voidWWDG_IRQHandler(void)

{

//UpdateWWDGcounter

WWDG_SetCounter(0x7F);//当禁掉此句后,窗口看门狗将产生复位

//ClearEWIflag*/

WWDG_ClearFlag();//清除提前唤醒中断标志位

}

就是这样配置了!这样就能实现我们的两只狗看着程序这个大门了!!!



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。所以...

关键字: 单片机 看门狗 计算机

STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B内存等。还支持ISP下载,不用编程器,只要一个MAX2...

关键字: 单片机 看门狗 中断

今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其 工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的 这个引脚上送入高电平(或低电平),这一...

关键字: 看门狗 中断函数 单片机

看门狗(watch dog)是一个定时器,可以设置一个定时时间,计时到时会把MCU复位,所以MCU必须要在定时时间到之前将计数值重置(这个动作通常称为喂狗)。在嵌入式系统中加入看门狗,可以监测MCU是否还在正常运行,如果...

关键字: 看门狗 定时器

我们是否因系统上出现意外的电压尖峰或电流浪涌而担心系统安全?电流浪涌和电压尖峰可能是由系统上运行的软件引起的。来自软件的意外命令会使系统陷入无限循环,从而导致电源轨上出现电流浪涌或电压尖峰,并可能损坏设备。

关键字: 看门狗 电流浪涌

stm32f103zet6是一种嵌入式-微控制器的集成电路(IC),是由ST公司开发的STM32F1系列的其中一种,芯体尺寸是32位,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是...

关键字: stm32f103zet6 datasheet 引脚图

本文主要介绍AUTOSAR架构下的WdgDriverWdgIfWdgM模块,分析模块之间的依赖关系以及运行原理以帮助快速理解。本文以MPC5746R为主控芯片,以FS6500为SBC,DaVinciConfigurato...

关键字: SAR 看门狗

本文主要介绍AUTOSAR架构下的WdgDriverWdgIfWdgM模块,分析模块之间的依赖关系以及运行原理以帮助快速理解。本文以MPC5746R为主控芯片,以FS6500为SBC,DaVinciConfigurato...

关键字: SAR 看门狗

这是一篇旧文,技术交流群有人在讨论这个问题,今天就来分享一下。 我

关键字: STM32 FreeRTOS 看门狗

当下,一边汽车自动化驾驶的发展势头节节攀高,一边频频出现各类痛心的质量事故。

关键字: 看门狗 自动化驾驶 安全性
关闭
关闭