日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(Kinetisnbsp;K60)WDOG看门狗测试

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (Kinetisnbsp;K60)WDOG看门狗测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文地址:(http://blog.sina.com.cn/s/blog_4ac1eaae0101dab5.html 看門狗是一種計數器。當計數的值溢出時會自動復位MCU。(需要在溢出前“喂狗”,避免復位)
看門狗機制可以避免程序跑死(跑死時自動復位)
改變看門狗寄存器參數前必須解鎖看門狗。freescale kinetis看門狗解鎖步驟是向看門狗的解鎖寄存器連續寫入0XC520和0xD928.兩次寫入不能超過20個時鐘周期。

注:程序需要燒至flash,否則復位后程序丟失。




初始化看門狗

void WDOG_Init(void)
{
????WDOG_UNLOCK = 0xC520;???????
????WDOG_UNLOCK = 0xD928;???????????????//解鎖看門狗寄存器(重新寫入前必須解鎖)兩次寫入不能超過20個時鐘周期
???
????WDOG_PRESC = 0x0700;??//(7+1)分頻

????WDOG_TOVALH = 0x0110;????//看門狗超時時間設置為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; //關閉看門狗 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;????//看門狗超時時間設置為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; //關閉看門狗 WDOTEN 0
}
void WDOG_Open(void)
{
????WDOG_UNLOCK = 0xC520;
????WDOG_UNLOCK = 0xD928;?
????WDOG_STCTRLH |= 0x0001;??//打開看門狗 WDOTEN 1
}

===========================華麗的實驗現象===============================

注釋掉“喂狗后”LED 1.5秒閃爍(初始化LED為低電平)3秒看門狗復位
喂狗,LED亮1.5后熄滅



總結

以上是生活随笔為你收集整理的(Kinetisnbsp;K60)WDOG看门狗测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。