<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > S3C2440 Windows CE的RTC模塊驅動設計與實現

          S3C2440 Windows CE的RTC模塊驅動設計與實現

          作者: 時間:2013-03-30 來源:網絡 收藏

            

          下面給出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代碼層提供了與內核交互的函數,通過它內核可以獲得硬件平臺的信息 。在OAL層中,完成此功能的函數為      OEMIOcontrol()。其函數原型如下:
            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()函數調用OEMIOcontrol(),完成底層硬件信息的讀取,其中參數dwIoControl為內核與OAL通信的控制代碼,通過它可以完成硬件信息的讀取??刂拼a一般都是微軟定義好的,其中定義的控制代碼為IOCTL_HAL_INIT_RTC,通過它內核可以完成底層的初始化。
            

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

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


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();