亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xsrtc.c

?? ylpxa270 GPRS 通信代碼
?? C
字號:
/******************************************************************************
**
**  COPYRIGHT (C) 2000, 2001 Intel Corporation.
**
**  This software as well as the software described in it is furnished under 
**  license and may only be used or copied in accordance with the terms of the 
**  license. The information in this file is furnished for informational use 
**  only, is subject to change without notice, and should not be construed as 
**  a commitment by Intel Corporation. Intel Corporation assumes no 
**  responsibility or liability for any errors or inaccuracies that may appear 
**  in this document or any software that may be provided in association with 
**  this document. 
**  Except as permitted by such license, no part of this document may be 
**  reproduced, stored in a retrieval system, or transmitted in any form or by 
**  any means without the express written consent of Intel Corporation. 
**
**  FILENAME:       xsrtc.c
**
**  PURPOSE:        Real Time Clock functions
**
**  LAST MODIFIED:  02/08/2001
******************************************************************************/

/*
*******************************************************************************
*   HEADER FILES
*******************************************************************************
*/
#include "systypes.h"
#include "dm_errors.h"
#include "xsIntCtrlApi.h"
#define RTC_GLOBALS
#include "xsrtc.h"
#undef RTC_GLOBALS
#include <math.h>


/*
*******************************************************************************
*   GLOBAL DEFINITIONS
*******************************************************************************
*/
volatile RTCRegsT *RTCControlRegsP = (RTCRegsT *)RTC_REGISTER_BASE;
UINT32 RTCInterruptFlag = 0;

/*
*******************************************************************************
*   LOCAL DEFINITIONS
*******************************************************************************
*/

/*
*******************************************************************************
*
* FUNCTION:         RTCSWInit
*
* DESCRIPTION:      Initialize the devices software interface
*
* INPUT PARAMETERS: void
*
* RETURNS:          void
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        DM startup procedure
*
* PROTOTYPE:        void RTCSWInit (void);
*
*******************************************************************************
*/
void RTCSWInit (void)
{
// not implemented yet. May not need to.    
}

/*
*******************************************************************************
*
* FUNCTION:         RTCHWSetup
*
* DESCRIPTION:      Setup the hardware to a reset state
*
* INPUT PARAMETERS: void
*
* RETURNS:          UINT32 - 0 means no problem
*
* GLOBAL EFFECTS:   Will reset any previous set up including a trim value that 
*                   may have been set.
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 RTCHWSetup(void);
*
*******************************************************************************
*/
UINT32 RTCHWSetup(void)
{
    UINT32 returnValue = 0;
    
    // clear the RTC count register
//    RTCControlRegsP->RCNR = 0x0;
    
    // clear the RTC Alarm register
//    RTCControlRegsP->RTAR = 0x0;
    
    // clear the RTC Status register. Note that HZ and AL are not software writeable
    // So we will mask out the software write to these bits.
//    RTCControlRegsP->RTSR = (0x0 & ~0x3);
    
    // verify that the registers were reset
//    if((RTCControlRegsP->RCNR) || (RTCControlRegsP->RTAR) ||
//       (RTCControlRegsP->RTTR != (RTCControlRegsP->RTTR & RTTR_DEFAULT_VALUE)) ||
//       (RTCControlRegsP->RTSR != (0x0 & ~0x3)));
//    {
        // handle the error
//        returnValue = ERR_FAIL_CODE;
//    }    
    
    return returnValue;    
}

/*
*******************************************************************************
*
* FUNCTION:         RTCTrim
*
* DESCRIPTION:      Loads the trim register by extracting the integer and 
*                   fractional parts of the actual crystal frequency according 
*                   to the formula cited in the EAS. This is supposed to make
*                   the accuracy of the timer better than +/- 5 seconds per 
*                   month, 
*
* INPUT PARAMETERS: Float - the actual measured frequency of the 32KHz crystal
*
* RETURNS:          UINT32 - 0 means no problem
*
* GLOBAL EFFECTS:   adjusts the accuracy of the 1Hz output 
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 RTCTrim (float);
*
*******************************************************************************
*/
UINT32 RTCTrim (UINT32 actualFreqInteger, UINT32 actualFreqFractional )
{
    UINT32 returnValue = 0;
    UINT32 integerPart;
    UINT32 fractionalPart;
    
    
    // get the values out
    integerPart = actualFreqInteger;
    fractionalPart = actualFreqFractional;
    
    // store the values in the trim register.
    RTCControlRegsP->RTTR &= ~RTTR_LCK;     // unlock the register
    RTCControlRegsP->RTTR = (UINT32) (
                                        ((1023 * (UINT32)fractionalPart) << RTTR_TDC_SHIFT) |
                                        (((UINT32)integerPart - 1) << RTTR_CDC_SHIFT)
                                     );
    // relock the register
    RTCControlRegsP->RTTR |= RTTR_LCK;
    return returnValue;
}

/*
*******************************************************************************
*
* FUNCTION:         RTCEnableAlarm
*
* DESCRIPTION:      Enables the RTC Alarm interrupt 
*
* INPUT PARAMETERS: void
*
* RETURNS:          void
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        void RTCEnableAlarm(void);
*
*******************************************************************************
*/
void RTCEnableAlarm(void)
{
    RTCControlRegsP->RTSR |= RTSR_ALE;
}

/*
*******************************************************************************
*
* FUNCTION:         RTCDisableAlarm
*
* DESCRIPTION:      Disables the RTC Alarm interrupt 
*
* INPUT PARAMETERS: void
*
* RETURNS:          void
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        void RTCDisableAlarm(void);
*
*******************************************************************************
*/
void RTCDisableAlarm(void)
{
    RTCControlRegsP->RTSR &= ~RTSR_ALE;
}

/*
*******************************************************************************
*
* FUNCTION:         RTCEnable1HzAlarm
*
* DESCRIPTION:      Enables the RTC 1 Hz Alarm interrupt 
*
* INPUT PARAMETERS: void
*
* RETURNS:          void
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        void RTCEnable1HzAlarm(void);
*
*******************************************************************************
*/
void RTCEnable1HzAlarm(void)
{
    RTCControlRegsP->RTSR |= RTSR_HZE;
}

/*
*******************************************************************************
*
* FUNCTION:         RTCDisable1HzAlarm
*
* DESCRIPTION:      Disables the 1 Hz RTC Alarm interrupt 
*
* INPUT PARAMETERS: void
*
* RETURNS:          void
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        void RTCDisable1HzAlarm(void);
*
*******************************************************************************
*/
void RTCDisable1HzAlarm(void)
{
    RTCControlRegsP->RTSR &= ~RTSR_HZE;
}

/*
*******************************************************************************
*
* FUNCTION:         RTCClear1HzAlarm
*
* DESCRIPTION:      Clears the 1 Hz RTC Alarm interrupt 
*
* INPUT PARAMETERS: void
*
* RETURNS:          void
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        void RTCClear1HzAlarm(void);
*
*******************************************************************************
*/
void RTCClear1HzAlarm(void)
{
    RTCControlRegsP->RTSR |= RTSR_HZ;
}

/*
*******************************************************************************
*
* FUNCTION:         RTCGeneratePulse
*
* DESCRIPTION:      This is a demo that activates the RTC and generates an
*                   interrupt for every number of integer seconds specified. 
*                   RTCHandleAlarmInterrupt is used to reset the interrupt 
*                   and display the result on the output device.
*
* INPUT PARAMETERS: UINT32 - The number of seconds between pulses 
*
* RETURNS:          UINT32 - 0 means no error
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 RTCGeneratePulse (UINT32 seconds);
*
*******************************************************************************
*/

UINT32 RTCGeneratePulse (UINT32 seconds, UINT32 loopCount)
{
    UINT32 returnValue = 0;
    
    // check parameters
    if ((loopCount == 0) || (seconds == 0)) 
    {   
        LOGERROR(returnValue, ERR_L_XSRTC, ERR_RTC_GENPULSE, 
                 ERR_T_ILLPARAM, loopCount, seconds, 0);
    }
    else
    {
        do
        {
            // As a matter of safety, just unregister any previous interrupt handlers
            // for this interrupt.

            returnValue = XsIcUnRegisterHandler (XSIC_RTC_ALRM_SGNL);
            if (!returnValue)
            {
                // setup the interrupt handler
                returnValue = XsIcRegisterHandler (XSIC_RTC_ALRM_SGNL, 
                                                   (XsIcL1IntHandlerFnPT)RTCHandleAlarmInterrupt, 0);
                if(!returnValue)
                {
                    // setup the RTC registers.....
                    RTCControlRegsP->RTSR |= RTSR_ALE;  // enable the alarm
                    RTCControlRegsP->RTAR = seconds;    // set the timeout
                    RTCControlRegsP->RCNR = 0x0;        // reset the counter register
                    
                    // Spin here until the interrupt is handled.
                    while(!RTCInterruptFlag);
                                        
                    // immediately clear the flag 
                    RTCInterruptFlag = 0;
                }

            }
        } while (loopCount--);
    }
    return returnValue;
}

                                                                          /*
*******************************************************************************
*
* FUNCTION:         RTCHandleAlarmInterrupt
*
* DESCRIPTION:      This is the interrupt handler for the function 
*                   RTCGeneratePulse.
*
* INPUT PARAMETERS: void
*
* RETURNS:          void
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            None
*
* CALLED BY:        The Interrupt controller 
*
* PROTOTYPE:        void RTCHandleAlarmInterrupt(void);
*
*******************************************************************************
*/

void RTCHandleAlarmInterrupt (void)
{
    // clear the interrupt reason right away to prevent any race conditions.
    // Do this bu resetting the counter register.
    RTCControlRegsP->RCNR = 0x0;        // reset the counter register
    
    // Now set the global flag so that the the pulse generating routine can
    // continue.
    
    RTCInterruptFlag = 1;
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩久久一区二区| 福利91精品一区二区三区| 3d动漫精品啪啪| 国产一区二区三区免费看 | 亚洲免费三区一区二区| 国产日韩欧美一区二区三区综合| 91黄色免费版| 精品少妇一区二区| 成人黄色av电影| 成人激情动漫在线观看| 亚洲婷婷综合久久一本伊一区| 亚洲欧美色一区| 裸体歌舞表演一区二区| 欧美成人一区二区三区| 国产精品乱码久久久久久| 久久久精品综合| 精品欧美乱码久久久久久1区2区| 精品少妇一区二区三区日产乱码| 精品久久久久久亚洲综合网| 国产欧美日韩在线看| 日韩欧美一区在线| 日韩欧美精品在线| 色综合一区二区三区| 日本一不卡视频| 欧美一区二区三区四区视频| 2021久久国产精品不只是精品| 久久久www成人免费无遮挡大片| 亚洲欧美综合另类在线卡通| 琪琪一区二区三区| 欧美偷拍一区二区| 亚洲午夜久久久久久久久电影网| 精品亚洲国产成人av制服丝袜 | 欧美亚洲一区二区三区四区| 欧美mv和日韩mv的网站| 久草精品在线观看| 久久久久久久综合色一本| 免费不卡在线视频| 欧美日韩精品电影| 亚洲少妇30p| 奇米影视在线99精品| 欧美日韩亚洲综合一区二区三区| 精品对白一区国产伦| 激情亚洲综合在线| 日韩一区二区三区免费看 | 久久蜜桃一区二区| 美女视频第一区二区三区免费观看网站 | 日韩视频不卡中文| 激情另类小说区图片区视频区| 色综合中文字幕国产 | 欧美a级一区二区| 日韩视频免费直播| 一区二区三区在线免费观看| 日韩一级片网站| 99久久久国产精品免费蜜臀| 亚洲国产综合色| 亚洲欧美一区二区在线观看| 国产91精品一区二区| 亚洲第一av色| 中文字幕一区二区在线播放| 日日夜夜精品免费视频| 国产日韩欧美一区二区三区综合| 欧美天天综合网| 成人福利视频网站| 蜜臀a∨国产成人精品| 亚洲狼人国产精品| 26uuu成人网一区二区三区| 欧美色图12p| 一本到不卡精品视频在线观看| 日本sm残虐另类| 久久超碰97中文字幕| 日本va欧美va瓶| 免费在线视频一区| 日韩综合一区二区| 午夜久久久影院| 性做久久久久久免费观看| 最新国产の精品合集bt伙计| 国产精品久久免费看| 久久久国产午夜精品| 久久亚洲综合av| 中文在线免费一区三区高中清不卡| 91麻豆精品国产无毒不卡在线观看 | 亚洲欧洲精品天堂一级 | 欧美不卡123| 国产婷婷一区二区| 国产精品九色蝌蚪自拍| 亚洲一区免费观看| 国内精品免费在线观看| 91福利精品视频| 久久婷婷色综合| 日本欧美一区二区| 日本黄色一区二区| 日本一区二区三级电影在线观看 | 777xxx欧美| 中文字幕乱码日本亚洲一区二区| 亚洲欧洲另类国产综合| 蜜桃传媒麻豆第一区在线观看| av在线免费不卡| 久久久99精品久久| 日韩中文字幕1| 91久久久免费一区二区| 亚洲国产精品精华液ab| 精品一区二区三区视频| 在线精品视频小说1| 亚洲国产精品国自产拍av| 麻豆精品国产91久久久久久| 色婷婷精品大在线视频| 欧美国产精品中文字幕| 偷拍与自拍一区| 91精品国产麻豆| 经典三级视频一区| 精品乱人伦一区二区三区| 日本不卡高清视频| 久久亚洲影视婷婷| 97se亚洲国产综合自在线不卡| 国产欧美日韩精品在线| 成人午夜短视频| 亚洲综合在线第一页| 欧美放荡的少妇| 蜜臀久久99精品久久久久久9| 欧美本精品男人aⅴ天堂| 蓝色福利精品导航| 久久久影视传媒| www.av亚洲| 毛片一区二区三区| 亚洲男人的天堂网| 欧美mv日韩mv国产网站| 国产大陆精品国产| 亚洲精品免费在线播放| 91精品国产一区二区人妖| 激情久久久久久久久久久久久久久久| 久久一日本道色综合| 91在线精品秘密一区二区| 天堂蜜桃91精品| 国产精品国产三级国产| 欧美二区三区91| 成人av电影在线| 久久99热国产| 亚洲第一福利视频在线| 欧美一个色资源| 不卡的av网站| 美女视频黄久久| 亚洲成av人片一区二区梦乃 | 中文字幕一区二区三区在线播放| 国产精品久久二区二区| 日韩欧美成人激情| 精品国产不卡一区二区三区| 欧美一区二区三区成人| |精品福利一区二区三区| 国产真实乱偷精品视频免| 色综合久久综合网97色综合 | 国产精品乱人伦| 老司机精品视频一区二区三区| 国产很黄免费观看久久| 久久99精品国产| 色成人在线视频| 久久综合狠狠综合久久综合88| 亚洲激情六月丁香| 久久99精品久久久久久国产越南| 成人h动漫精品| 亚洲精品一区在线观看| 亚洲综合免费观看高清完整版在线| 久久9热精品视频| 欧美片网站yy| 亚洲精品高清视频在线观看| 极品美女销魂一区二区三区 | 国产婷婷精品av在线| 午夜精品一区二区三区免费视频| 成人晚上爱看视频| 欧美一二区视频| 亚洲影视在线播放| 色综合久久综合网欧美综合网| 久久久.com| 狠狠色综合日日| 91精品婷婷国产综合久久性色| 亚洲精品成a人| 99免费精品视频| 国产精品日韩精品欧美在线| 国内成+人亚洲+欧美+综合在线| 3d成人动漫网站| 亚洲图片欧美一区| 在线免费不卡电影| 亚洲人成伊人成综合网小说| 福利一区福利二区| 欧美激情资源网| 成人激情校园春色| 久久久99久久| 成人免费视频免费观看| 美女视频免费一区| 国产99久久久久| 国产精品国产三级国产普通话三级| 国产精品1区2区3区在线观看| 亚洲国产精品精华液ab| 99久久精品国产一区| 亚洲一区在线视频| 欧美一区日本一区韩国一区| 国产乱国产乱300精品| 中文字幕一区二区三区蜜月| 欧美日韩在线一区二区| 麻豆精品国产传媒mv男同| 亚洲国产精品av|