一、看門狗介紹
看門狗在正常設計的產(chǎn)品里都會用到,主要是解決程序跑飛、異常死機等,程序內(nèi)部引起的問題情況下可以自動復位重啟的功能。
看門狗本身就是個定時器,和普通的定時器差不多。 就是設置一個固定的超時時間,正常情況下,程序比如在看門狗的超時時間到達之前重置時間(這個就叫做喂狗);在程序正常運轉的情況下,因為每次都會去喂狗,就不會有超時的現(xiàn)象。如果因為程序邏輯出現(xiàn)問題,程序在指定的時間內(nèi)沒辦法去喂狗,就導致看門狗定時器超時,超時就會產(chǎn)生軟件復位,程序重啟,這樣就可以避免產(chǎn)品宕機。 這種重啟操作一般都可以解決這種偶然產(chǎn)生的一些程序BUG。 就像我們常用的電腦,卡死,或者出現(xiàn)一些奇怪問題,重啟差不多都能解決。
下面就介紹CC2530的看門狗程序配置,具體的配置直接截圖出來了。 在手冊里起始介紹的起始已經(jīng)很詳細了,只要明白看門狗這個功能的作用、含義,就可以直接看第3章的代碼去實操,分析代碼的配置對著手冊看一遍就差不多了。
二、看門狗配置
三、示例代碼
#include
#define uint unsigned int
#define RLED P1_0
#define GLED P1_1
void CC2530_InitLEDIO(void)
{
P1DIR |= 0x03; //P10、P11定義為輸出
RLED = 1;
GLED = 1;
//LED燈初始化為關
}
void CC2530_Init_Watchdog(void)
{
WDCTL = 0x00;
//時間間隔一秒,看門狗模式
WDCTL |= 0x08;
//啟動看門狗
}
void CC2530_SET_MAIN_CLOCK(source)
{
if(source)
{
CLKCONCMD |= 0x40; /*RC*/
while(!(CLKCONSTA &0X40)); /*待穩(wěn)*/
}
else
{
CLKCONCMD &= ~0x47; /*晶振*/
while((CLKCONSTA &0X40)); /*待穩(wěn)*/
}
}
void CC2530_FeetDog(void)
{
WDCTL = 0xa0;
WDCTL = 0x50;
}
void CC2530_Delay(uint n)
{
uint i;
for(i=0;i
審核編輯:湯梓紅
;i++);>
-
看門狗
+關注
關注
10文章
558瀏覽量
70707 -
定時器
+關注
關注
23文章
3232瀏覽量
114332 -
CC2530
+關注
關注
19文章
221瀏覽量
57767
發(fā)布評論請先 登錄
相關推薦
評論