在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM 學習筆記六 (看門狗中斷試驗)

            ARM 學習筆記六 (看門狗中斷試驗)

            作者: 時間:2016-11-20 來源:網(wǎng)絡 收藏
            什么是看門狗呢?我也不是很清楚,網(wǎng)上資料說看門狗的作用就是防止程序發(fā)生死循環(huán),或者說程序跑飛。工作原理:在系統(tǒng)運行以后也就啟動了看門狗的計數(shù)器,看門狗就開始自動計數(shù),如果到了一定時間,不給把看門狗的計數(shù)清0,就會引起計數(shù)益處中斷,產(chǎn)生系統(tǒng)復位。

            但是我知道S3c2440啟動代碼里一開始就禁止看門狗了。所以,一般都用不上吧。除非你的應用程序?qū)崟r性比較高,那就得考慮用看門狗來看門了。

            本文引用地址:http://www.biyoush.com/article/201611/318884.htm

            #define GLOBAL_CLK 1

            #include "def.h"
            #include "2440addr.h"
            #include "mmu.h"
            #include "option.h"

            #define LED1 (1<<5) // rGPB[5] =1 ;
            #define LED2 (1<<6) // rGPB[6] =1 ;
            #define LED3 (1<<7) // rGPB[7] =1 ;
            #define LED4 (1<<8) // rGPB[8] =1 ;

            static int index=0;

            void Delay1(int time)
            {
            unsigned int i,j;
            for(i=1;i<100;i++)
            for(j=1;j ;
            }

            void LightLED(void){

            rGPBDAT = 0xfff;

            if ( index==1 )
            rGPBDAT=rGPBDAT & ~LED1;

            if ( index==2 )
            rGPBDAT=rGPBDAT & ~LED2;

            if ( index==3)
            rGPBDAT=rGPBDAT & ~LED3;

            if ( index==4 )
            rGPBDAT=rGPBDAT & ~LED4;

            Delay1( 20000 ) ;


            }
            void __irq WatchDog_ISR(void){

            rSUBSRCPND = BIT_SUB_WDT; //注意用到子中斷源寄存器
            rSRCPND = BIT_WDT_AC97;
            rINTPND = BIT_WDT_AC97;


            if (index >4 ){
            index=1;
            }
            else{
            index++;
            }
            LightLED();


            }

            void EINT_Init(void){

            ClearPending(BIT_WDT_AC97);

            pISR_WDT_AC97=(unsigned int)WatchDog_ISR;
            //Prescaler value=100; lock dividion factor=128;PCLK=67.5MHz
            //t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.0002
            //disable watchdog
            rWTCON=0x6418; //01100100 00 0 11 0 0 0
            //周期T=WTCNT*t_watchdog=3S
            rWTDAT=15000;
            rWTCNT=15000;

            rINTMSK &= (~BIT_WDT_AC97);
            rINTSUBMSK &= (~BIT_SUB_WDT); //這個要用子中斷屏蔽寄存器

            rWTCON=0x643c; //01100100 00 1 11 1 0 0

            }

            void Main(void){
            rGPBCON = 0x015550;
            rGPBUP = 0x7ff;

            ChangeClockDivider(3,1);
            ChangeMPllValue(127,2,1);

            MMU_Init();


            EINT_Init();
            while (1);

            }

            上面的程序每隔3秒會自動點亮一個LED.實現(xiàn)定時跑馬燈的效果。

            這個例子我本想?yún)⒖及存I的例子來寫代碼,但是中途發(fā)現(xiàn)按鍵的例子不適用于看門狗。

            因為看門狗是內(nèi)部中斷,按鍵是外部中斷。另外最讓我不明白的是,書上或是網(wǎng)上很多例子都用


            pISR_WDT_AC97作為看門狗中斷服務的向量地址。嘗試用TIME0,TIME1都不行。奇怪啊



            關(guān)鍵詞: ARM看門狗中斷試

            評論


            技術(shù)專區(qū)

            關(guān)閉