在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設(shè)計應(yīng)用 > S3C2440 Windows CE的RTC模塊驅(qū)動設(shè)計與實現(xiàn)

            S3C2440 Windows CE的RTC模塊驅(qū)動設(shè)計與實現(xiàn)

            作者: 時間:2013-03-30 來源:網(wǎng)絡(luò) 收藏

              

            下面給出OEMGetRealTime()的源代碼僅供參考。
              OEMGetRealTime(LPSYSTEMTIME lpst)
              {
              volatile RTCreg *s2440RTC;
              s2440RTC = (RTCreg *)RTC_BASE;
              //RETAILMSG(1,(_T("OEMGetRealTime ")));
              //使能RTC
              s2440RTC->rRTCCON =0x1;
              lpst->wMilliseconds=0;
              lpst->wSecond= FROM_BCD(s2440RTC->rBCDSEC0x7f);
              lpst->wMinute= FROM_BCD(s2440RTC->rBCDMIN0x7f);
              lpst->wHour= FROM_BCD(s2440RTC->rBCDHOUR0x3f);
              lpst->wDayOfWeek=(s2440RTC->rBCDDATE-1);
              lpst->wDay= FROM_BCD(s2440RTC->rBCDDAY0x3f);
              lpst->wMonth=FROM_BCD(s2440RTC->rBCDMON0x1f);
              //lpst->wYear=(2000+s2440RTC->rBCDYEAR);
              lpst->wYear=FROM_BCD(s2440RTC->rBCDYEAR)+2000;
              if(lpst->wSecond==0)
              {
              lpst->wSecond=FROM_BCD(s2440RTC->rBCDSEC0x7f);
              lpst->wMinute=FROM_BCD(s2440RTC->rBCDMIN0x7f);
              lpst->wHour=FROM_BCD(s2440RTC->rBCDHOUR0x3f);
              lpst->wDayOfWeek=(s2440RTC->rBCDDATE-1);
              lpst->wDay=FROM_BCD(s2440RTC->rBCDDAY0x3f);
              lpst->wMonth=FROM_BCD(s240RTC->rBCDMON0x1f);
              lpst->wYear=(2000+s240RTC->rBCDYEAR);
              }
              //禁止RTC
              s2440RTC->rRTCCON=0;
              return TRUE;
              }
              3.3 系統(tǒng)I/O
              OAL代碼層提供了與內(nèi)核交互的函數(shù),通過它內(nèi)核可以獲得硬件平臺的信息 。在OAL層中,完成此功能的函數(shù)為      OEMIOcontrol()。其函數(shù)原型如下:
              Bool OEMIoContol(……)
              {switch(dwIoContro1)
              {case IOCTL_HAL_INIT_RTC;
              if(nInBufSize>= sizeof(SYSTEMTIME))
              return OEMSetRealTime((LPSYSTEMTIME)lpInBuf);
              else
              return FALSE;
              break;
              ……
              default: return FALSE;
              }
              

            WinCE每次啟動時都會由KernelIoContrl()函數(shù)調(diào)用OEMIOcontrol(),完成底層硬件信息的讀取,其中參數(shù)dwIoControl為內(nèi)核與OAL通信的控制代碼,通過它可以完成硬件信息的讀取??刂拼a一般都是微軟定義好的,其中定義的控制代碼為IOCTL_HAL_INIT_RTC,通過它內(nèi)核可以完成底層的初始化。
              

            nInBufSize是由lpInBuf(指針)指向的緩沖區(qū)的大小,緩沖區(qū)是按字節(jié)大小計算的。SYSTEMTIME是WinCE內(nèi)部定義的一個表示時間的結(jié)構(gòu)體,LPSYSTEMTIME為指向此結(jié)構(gòu)體的指針。SYSTEMTIME結(jié)構(gòu)體原型如下,原型中定義了字格式的年、月、星期、日、時、分、秒、毫秒。
              typedef struct _SYSTEMTIME
              {
              WORD wYear;
              WORD wMonth;
              WORD wDayOfWeek;
              WORD wDay;
              WORD wHour;
              WORD wMinute;
              WORD wSeeond;
              WORD wMilliseconds;
              }SYSTEMTIME;
              
              在本設(shè)計中,RTC的時間分辨率為“秒”,這是因為所能提供的最小時間基準就是“秒”。用戶可以根據(jù)實際需求編寫系統(tǒng)I/O下的RTC初始化代碼,也可以禁止這部分代碼。若WinCE從OAL層讀不到時鐘參數(shù)的話,它會以系統(tǒng)的默認時間值來初始化SYSTEMTIME結(jié)構(gòu)體。

              4 結(jié)束語
              
              當(dāng)前比較流行的ARM嵌入式處理器,如Samsung的S3C系列、Intel的Xscale系列、Motorola的龍珠系列等幾乎都內(nèi)嵌有RTC模塊。使許多嵌入式產(chǎn)品如手機、PDA等的時間顯示豐富多彩,如具有顯示陽歷、陰歷、萬年歷等功能。本文給出了RTC模塊的WinCE驅(qū)動程序?qū)崿F(xiàn),基于本設(shè)計可以進一步開發(fā)如時鐘界面等時鐘應(yīng)用功能,以滿足多姿多彩的嵌入式系統(tǒng)對于時鐘功能的應(yīng)用需求。


            上一頁 1 2 3 下一頁

            關(guān)鍵詞: S3C2440 WindowsCE RTC模塊

            評論


            相關(guān)推薦

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

            關(guān)閉