(Kinetisnbsp;K60)WDOG看门狗测试
生活随笔
收集整理的這篇文章主要介紹了
(Kinetisnbsp;K60)WDOG看门狗测试
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文地址:(http://blog.sina.com.cn/s/blog_4ac1eaae0101dab5.html 看門狗是一種計數(shù)器。當(dāng)計數(shù)的值溢出時會自動復(fù)位MCU。(需要在溢出前“喂狗”,避免復(fù)位)
看門狗機(jī)制可以避免程序跑死(跑死時自動復(fù)位)
改變看門狗寄存器參數(shù)前必須解鎖看門狗。freescale kinetis看門狗解鎖步驟是向看門狗的解鎖寄存器連續(xù)寫入0XC520和0xD928.兩次寫入不能超過20個時鐘周期。
注:程序需要燒至flash,否則復(fù)位后程序丟失。
初始化看門狗
void WDOG_Init(void)
{
????WDOG_UNLOCK = 0xC520;???????
????WDOG_UNLOCK = 0xD928;???????????????//解鎖看門狗寄存器(重新寫入前必須解鎖)兩次寫入不能超過20個時鐘周期
???
????WDOG_PRESC = 0x0700;??//(7+1)分頻
????WDOG_TOVALH = 0x0110;????//看門狗超時時間設(shè)置為3s
????WDOG_TOVALL = 0x5E90;
}
喂狗
void WDOG_Feed(void)
{
????WDOG_REFRESH = 0xA602;
????WDOG_REFRESH = 0xB480;???//喂狗?
}
關(guān)閉和開啟看門狗
void WDOG_Close(void)
{
????WDOG_UNLOCK = 0xC520u;
????WDOG_UNLOCK = 0xD928u;?
????WDOG_STCTRLH &= ~0x0001; //關(guān)閉看門狗 WDOTEN 0
}
void WDOG_Open(void)
{
????WDOG_UNLOCK = 0xC520;
????WDOG_UNLOCK = 0xD928;?
????WDOG_STCTRLH |= 0x0001;??//打開看門狗 WDOTEN 1
}
=================================華麗的代碼分割線===============================
所有代碼
#include "LED.h"
void WDOG_Init(void);
void WDOG_Feed(void);
void WDOG_Close(void);
void WDOG_Open(void);
void main(void)
{
????DisableInterrupts;?
????WDOG_Init(); ?????//初始化看門狗??
????init_LED();???????
????EnableInterrupts;
???
????WDOG_Open();?????//開啟看門狗?????????????
????Delay(1500);
????while(1)
????{
????????LED1(0);
????????LED2(0);
????????LED3(0);
????????LED4(0);
????????//WDOG_Feed();?????//喂狗
????}
}
void WDOG_Init(void)
{
????WDOG_UNLOCK = 0xC520;???????
????WDOG_UNLOCK = 0xD928;???????????????//解鎖看門狗寄存器(重新寫入前必須解鎖)兩次寫入不能超過20個時鐘周期
???
????WDOG_PRESC = 0x0700;??//(7+1)分頻
????WDOG_TOVALH = 0x0110;????//看門狗超時時間設(shè)置為3s
????WDOG_TOVALL = 0x5E90;
}
void WDOG_Feed(void)
{
????WDOG_REFRESH = 0xA602;
????WDOG_REFRESH = 0xB480;???//喂狗?
}
void WDOG_Close(void)
{
????WDOG_UNLOCK = 0xC520u;
????WDOG_UNLOCK = 0xD928u;?
????WDOG_STCTRLH &= ~0x0001; //關(guān)閉看門狗 WDOTEN 0
}
void WDOG_Open(void)
{
????WDOG_UNLOCK = 0xC520;
????WDOG_UNLOCK = 0xD928;?
????WDOG_STCTRLH |= 0x0001;??//打開看門狗 WDOTEN 1
}
===========================華麗的實(shí)驗現(xiàn)象===============================
注釋掉“喂狗后”LED 1.5秒閃爍(初始化LED為低電平)3秒看門狗復(fù)位
喂狗,LED亮1.5后熄滅
看門狗機(jī)制可以避免程序跑死(跑死時自動復(fù)位)
改變看門狗寄存器參數(shù)前必須解鎖看門狗。freescale kinetis看門狗解鎖步驟是向看門狗的解鎖寄存器連續(xù)寫入0XC520和0xD928.兩次寫入不能超過20個時鐘周期。
注:程序需要燒至flash,否則復(fù)位后程序丟失。
初始化看門狗
void WDOG_Init(void)
{
????WDOG_UNLOCK = 0xC520;???????
????WDOG_UNLOCK = 0xD928;???????????????//解鎖看門狗寄存器(重新寫入前必須解鎖)兩次寫入不能超過20個時鐘周期
???
????WDOG_PRESC = 0x0700;??//(7+1)分頻
????WDOG_TOVALH = 0x0110;????//看門狗超時時間設(shè)置為3s
????WDOG_TOVALL = 0x5E90;
}
喂狗
void WDOG_Feed(void)
{
????WDOG_REFRESH = 0xA602;
????WDOG_REFRESH = 0xB480;???//喂狗?
}
關(guān)閉和開啟看門狗
void WDOG_Close(void)
{
????WDOG_UNLOCK = 0xC520u;
????WDOG_UNLOCK = 0xD928u;?
????WDOG_STCTRLH &= ~0x0001; //關(guān)閉看門狗 WDOTEN 0
}
void WDOG_Open(void)
{
????WDOG_UNLOCK = 0xC520;
????WDOG_UNLOCK = 0xD928;?
????WDOG_STCTRLH |= 0x0001;??//打開看門狗 WDOTEN 1
}
=================================華麗的代碼分割線===============================
所有代碼
#include "LED.h"
void WDOG_Init(void);
void WDOG_Feed(void);
void WDOG_Close(void);
void WDOG_Open(void);
void main(void)
{
????DisableInterrupts;?
????WDOG_Init(); ?????//初始化看門狗??
????init_LED();???????
????EnableInterrupts;
???
????WDOG_Open();?????//開啟看門狗?????????????
????Delay(1500);
????while(1)
????{
????????LED1(0);
????????LED2(0);
????????LED3(0);
????????LED4(0);
????????//WDOG_Feed();?????//喂狗
????}
}
void WDOG_Init(void)
{
????WDOG_UNLOCK = 0xC520;???????
????WDOG_UNLOCK = 0xD928;???????????????//解鎖看門狗寄存器(重新寫入前必須解鎖)兩次寫入不能超過20個時鐘周期
???
????WDOG_PRESC = 0x0700;??//(7+1)分頻
????WDOG_TOVALH = 0x0110;????//看門狗超時時間設(shè)置為3s
????WDOG_TOVALL = 0x5E90;
}
void WDOG_Feed(void)
{
????WDOG_REFRESH = 0xA602;
????WDOG_REFRESH = 0xB480;???//喂狗?
}
void WDOG_Close(void)
{
????WDOG_UNLOCK = 0xC520u;
????WDOG_UNLOCK = 0xD928u;?
????WDOG_STCTRLH &= ~0x0001; //關(guān)閉看門狗 WDOTEN 0
}
void WDOG_Open(void)
{
????WDOG_UNLOCK = 0xC520;
????WDOG_UNLOCK = 0xD928;?
????WDOG_STCTRLH |= 0x0001;??//打開看門狗 WDOTEN 1
}
===========================華麗的實(shí)驗現(xiàn)象===============================
注釋掉“喂狗后”LED 1.5秒閃爍(初始化LED為低電平)3秒看門狗復(fù)位
喂狗,LED亮1.5后熄滅
總結(jié)
以上是生活随笔為你收集整理的(Kinetisnbsp;K60)WDOG看门狗测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react学习(4)----两个全选中就
- 下一篇: Python进阶:如何将字符串常量转化为