<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        Wince流式接口驅動

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年04月21日   【字體:

           流式接口驅動程序就是系統提供了一組相同的接口,并導出一組相同的函數,通過修改這些函數達到底層硬件的驅動,稱為流式驅動(個人定義歡迎拍磚)。以下描述均已I/O驅動為例說明。

                   建立流式驅動需要在BSP的\Src\Drivers目錄下建立一個文件夾存放4個文件,它們分別是.cpp文件、.def文件、Makefile(無擴展名)文件、source(無擴展名)文件。其中.cpp文件主要實現:驅動程序地址空間的分配、動態鏈接庫的入口設置、12個外部入口函數的設置等;.def文件主要是聲明需要輸出的接口函數;Makefile和source是為仿造wince下的driver架構而建立的文件。各個具體函數功能請參看代碼注釋。在建立以上文件后,還需在Platform.reg文件中注冊這個驅動的信息。內容如下
        [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPIODriver]
        "Prefix"="GIO"                   //聲明驅動名稱
        "Index"=dword:1                
        "Dll"="GPIODriver.dll"    //動態鏈接庫文件
                到此驅動函數基本上完成了,之后的工作就是VS2005創建一些控制界面以及調用這些函數而已。那么對于一些習慣性寫單片機程序的人,可能會有些疑問,在操作I/O時應該需要修改一些寄存器,為什么以上函數代碼均沒有做這方面的工作呢?其實寄存器的地址,以及地址映射在BSP中的.inc文件均有定義。在wince是不用知道這些底層硬件的具體內容,它們對于wince來說就相當一個文件而已。但本質上來說跟編寫單片機程序操作I/O的原理是一樣的,都是將I/O口控制為輸出,在對數據寄存器賦值,只是wince下編程有人給我們做了一部分工作而已,其實就驅動而言,自己直接操作物理地址實現驅動會更易于理解和簡單。
                接下來在VS2005建立工程文件,添加相應的按鈕。在按鈕單擊事件函數中添加如下代碼
                HANDLE gpiodriver;
        gpiodriver=CreateFile(L"GIO1:",GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );
         
        CDC *pDC = new CClientDC(this);
        CBrush brush;
        DeviceIoControl(gpiodriver,IO_CTL_GPIO_1_OFF,NULL,0,NULL,0,NULL,NULL);
        brush.CreateSolidBrush(RGB(0,0,0));
        CBrush *pOldBrush = pDC->SelectObject(&brush);
        pDC->Ellipse(50,80,70,100);
        pDC->SelectObject(pOldBrush);
        delete pDC;
        各個函數的原型及功能均可以在網上收索到,在此不做解釋(可以在工程文件中看到說明,但由于SDK的不同可能在其他的VS2005的編譯器下加載不成功,或者編譯不成功)接著就是編譯運行了,到此大功告成!

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮