ARM7入門15,看門狗定時(shí)器
主程序:
/****************************************************************************
* 文 件 名:main.c
* 功 能:運(yùn)行WDT,并控制LED1--LED4顯示輸出。程序開始先對(duì)LED1--LED4閃爍控制,
* 并進(jìn)行喂狗處理;然后只點(diǎn)亮LED1,并進(jìn)入死循環(huán),等待WDT復(fù)位。
* 說(shuō) 明:將跳線器JP12短接。此程序只可以在Flash中運(yùn)行,看門狗復(fù)位會(huì)導(dǎo)致JTAG
* 無(wú)法調(diào)試。
****************************************************************************/
#include "config.h"
#define LEDCON 0x0000000f
/****************************************************************************
* 名 稱:WdtFeed()
* 功 能:看門狗喂狗操作。
* 入口參數(shù):無(wú)
* 出口參數(shù):無(wú)
****************************************************************************/
void WdtFeed(void)
{
WDFEED = 0xAA;
WDFEED = 0x55;
}
/****************************************************************************
* 名 稱:DelayNS()
* 功 能:長(zhǎng)軟件延時(shí),具有喂狗功能。
* 入口參數(shù):dly延時(shí)參數(shù),值越大,延時(shí)越久
* 出口參數(shù):無(wú)
****************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<1000; i++)WdtFeed();
}
}
/****************************************************************************
* 名 稱:main()
* 功 能:初始I/O口及WDT,然后開始先對(duì)LED1--LED4閃爍控制,并進(jìn)行喂狗處理;
* 然后只點(diǎn)亮LED1,并進(jìn)入死循環(huán),等待WDT復(fù)位。
* 說(shuō) 明:如果將程序燒寫到FLASH運(yùn)行,WDT復(fù)位后程序會(huì)重新開始;若使用RAM進(jìn)行仿真調(diào)試,
* WDT復(fù)位后JTAG口會(huì)斷開。
****************************************************************************/
int main(void)
{
uint8 i;
IO0DIR = LEDCON;
WDTC = 11059200;// 設(shè)置WDTC,喂狗重裝值
WDMOD = 0x03;// 復(fù)位并啟動(dòng)WDT
WdtFeed();// 進(jìn)行喂狗操作
for(i=0; i<8; i++)
{
IO0SET = 0x0000000f;
DelayNS(5);
IO0CLR = 0x0000000f;
DelayNS(5);
}
IO0SET = 0x0000000f;
IO0CLR = 0x00000001;
while(1);
//return(0);
}