您的位置 首页 新品

STM8S-独立看门狗的使用

在编写程序时有时会出现死机或程序跑飞的情况,这时对系统有一定的影响,怎样让程序可以自行重启呢,STM8S中的看门狗就是实现这一功能的,

在编写程序时有时会呈现死机或程序跑飞的状况,这时对体系有必定的影响,怎样让程序能够自行重启呢,STM8S中的看门狗便是完成这一功用的,用看门狗检测程序的履行,在看门狗的复位时刻内进行喂狗,假如程序在某个当地呈现问题,那么就不能及时的进行喂狗,这时体系就会重新发动,到达检测的意图。经过调查小灯的闪耀快慢能够看出体系是否复位。

程序如下:

//软件环境:IAR FOR STM8 V1.0
//作者:Nicole

//功用:STM8的独立看门狗使用

//日期:2010.11.04

#include
#include
unsigned int i;
//时钟装备
void CLK_Configuration(void)
{
//CLK_ICKR= 0x08; //翻开低速时钟
CLK_CKDIVR = 0x00;
}

//延时函数
void Delay(unsigned int i)
{
unsigned int j;
while(i–)
{
for(j=1000;j>0;j–);
}

}
//IO口装备,操控小灯
void GPIO_Init(void)
{
unsigned int i;
PD_DDR|=0x01;//PD0输出,其他坚持原功用
PD_CR1|=0x01;//对应位设置为推挽输出
PD_CR2|=0x00;//输出最大频率为2MHz

//小灯闪耀的速度快(为了看的明晰循环4次)
for(i=0;i<4;i++)
{
PD_ODR=0xff;
Delay(200);
PD_ODR=0xfe;
Delay(200);
}
}

//看门狗装备

void IWDG_Init(void)
{
IWDG_KR = 0xCC; //发动IWDG
IWDG_KR = 0x55; //免除 PR 及 RLR 的写保护
IWDG_RLR = 0xff; //看门狗计数器重装载数值
IWDG_PR = 0x06; //分频系数为256,最长超时时刻为:1.02S
IWDG_KR = 0xAA; //改写IDDG,防止发生看门狗复位,一起康复 PR 及 RLR 的写保护状况
void main(void)
{
CLK_Configuration(); // 敞开外部时钟
GPIO_Init();// 初始化端口
IWDG_Init();// 初始化外部看门狗
while(1)
{
PD_ODR = 0xff;//PD0为输出1,LED
Delay(1000);//延时长小灯闪耀慢些

PD_ODR = 0xfe;//PD0为输出0,LED亮
Delay(1000);
}

//程序中没有及时喂狗,所以调查到小灯先闪耀快些,然后闪耀慢些,到达看门狗的复位时刻体系重启,循环上述进程
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/257858.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部