新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > S3C2440-RTC中斷

        S3C2440-RTC中斷

        作者: 時間:2016-12-02 來源:網絡 收藏
        void SetAlarm(){
        rALMSEC = alarm_buffer[0];
        rALMMIN = alarm_buffer[1];
        rALMHOUR = alarm_buffer[2];
        rALMDATE = alarm_buffer[3];
        rALMMON = alarm_buffer[4];
        rALMYEAR = alarm_buffer[5];
        }
        void __irq EINT0_ISR(void){
        rSRCPND |= 1; //SRCPND 通過寫入數據清零,如果不清零,會反復進行請求
        rINTPND |= 1; //INDPND 通過置1清零
        flag = 1;
        }
        void __irq EINT2_ISR(void){ //使用__irq這個關鍵字定義終端服務例程,這樣系統會自動為我們保留一些變量,并能在中斷處理完后正確的返回
        rSRCPND |= 1<<2;
        rINTPND |= 1<<2;
        rTICNT &= "(1<<7);
        rGPBDAT = 0xfe; //如果按鍵被按下,關閉節拍時間中斷
        }
        void __irq Alarm_ISR(void){
        rSRCPND |= 1<<30; //SRCPND 通過寫入數據清零,如果不清零,會反復進行請求
        rINTPND |= 1<<30; //INDPND 通過置1清零
        rTICNT = (1<<7)|(127<<0); //開啟節拍時間中斷,設置每1s中斷一次
        }
        void __irq Tick_ISR(void){
        rSRCPND |= 1<<8; //SRCPND 通過寫入數據清零,如果不清零,會反復進行請求
        rINTPND |= 1<<8; //INDPND 通過置1清零
        if(count%2 == 0)
        rGPBDAT = 0x1;
        else
        rGPBDAT = 0xfe;
        count++;
        if(count == 20){
        count = 0;
        rGPBDAT = 0;
        rTICNT &= "(1<<7); //中斷20次,然后停止節拍時間中斷
        }
        }
        int Main(){
        flag = 0;
        count = 0;
        t = 0;
        rGPFCON &= 0xffcc; //0
        rGPFCON |= (1<<1)|(1<<5);
        rGPFUP = 0xfe;
        rGPBCON &= 0xfffc;
        rGPBCON |= 0x1;
        rGPBUP = 0xfe;
        rULCON0 = 0xfff00;
        rULCON0 |= 0x3;
        rUCON0 = 0x0800;
        rUCON0 |= 0x05;
        rUBRDIV0 = 26;
        rRTCALM = (1<<1)|(1<<6); //主要全局報警使能,然后是分鐘報警使能
        rSUBSRCPND |= 0x3;
        rSRCPND |= (1<<0)|(1<<2)|(1<<8)|(1<<28)|(1<<30); //先清一下
        rINTPND |= (1<<0)|(1<<2)|(1<<8)|(1<<28)|(1<<30); //先清一下
        rINTMSK &= ("(0x1<<0))&("(0x1<<2))&("(0x1<<8))&("(0x1<<28))&("(0x1<<30)); //開中斷
        rINTSUBMSK &= ("(0x1<<0)) & ("(0x1<<1));
        pISR_EINT0 = (U32)EINT0_ISR;
        pISR_EINT2 = (U32)EINT2_ISR;
        pISR_TICK = (U32)Tick_ISR;
        pISR_RTC = (U32)Alarm_ISR;
        pISR_UART0 = (U32)Uart_ISR;
        Init_LCD();
        Paint_background(0xffffff,0,0,320,240);
        SetAlarm();
        SetTime();
        ShowTime();
        while(1){
        if(flag){
        Paint_background(0xffffff,0,0,320,240);
        ShowTime();
        flag = 0;
        }
        }
        }

        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 内江市| 江北区| 玛曲县| 中宁县| 台湾省| 宁化县| 察隅县| 孝义市| 当涂县| 黄平县| 八宿县| 新河县| 鄂托克旗| 南京市| 正阳县| 广汉市| 兴文县| 叙永县| 确山县| 横峰县| 曲阳县| 理塘县| 天台县| 加查县| 兖州市| 房山区| 织金县| 长丰县| 巧家县| 南投县| 梅河口市| 长岛县| 翁源县| 武川县| 吉安县| 夏津县| 望谟县| 沙坪坝区| 赫章县| 深泽县| 奈曼旗|