国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 4113|回復(fù): 1
打印 上一主題 下一主題

[提問(wèn)] 初學(xué)ARM11,自己在OK6410上寫(xiě)了一個(gè)LED程序,但有幾個(gè)地方不太明白

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2011-6-30 10:14:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: S3C6410開(kāi)發(fā)板
OK6410使用VB.NET控制ARM11開(kāi)發(fā)板LED程序
我是一個(gè)從單片機(jī)思想轉(zhuǎn)變到ARM上來(lái)的,一開(kāi)始很不習(xí)慣使用ARM的開(kāi)發(fā)方式,主要是自己對(duì)嵌入式的架構(gòu)理解起來(lái)不那么快,受單片機(jī)開(kāi)發(fā)影響,P0=0;即可點(diǎn)亮LED燈的影響,一直沒(méi)太搞懂a(chǎn)rm上LED驅(qū)動(dòng)是怎么回事,總想拿VB.NET寫(xiě)個(gè)程序能控制板子上的小燈。借鑒了一下別人的成果,寫(xiě)了這個(gè)小程序,希望對(duì)像我這樣在門(mén)口的朋友有個(gè)指導(dǎo)意義。另有幾個(gè)概念我梳理下,希望高手指點(diǎn)一下我的思路是否正確。
1. 對(duì)于跑WINCE系統(tǒng)的arm板原則上不允許客戶(hù)的C程序直接訪問(wèn)物理地址或者虛擬地址
2. 對(duì)于用于的C程序想訪問(wèn)設(shè)備的話(huà),系統(tǒng)里面必須要有驅(qū)動(dòng),驅(qū)動(dòng)應(yīng)該作為內(nèi)核級(jí)程序運(yùn)行的
3. 想點(diǎn)亮LED時(shí)應(yīng)用程序必須通過(guò)方法去掉系統(tǒng)api,然后由系統(tǒng)對(duì)應(yīng)去打開(kāi)驅(qū)動(dòng),再利用驅(qū)動(dòng)里的方法對(duì)應(yīng)去操作寄存器
4. 送數(shù)取數(shù)
5. 為什么這個(gè)程序既能跑在wince下又能跑在X86下呢?  請(qǐng)高手指點(diǎn)

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Drawing
Imports System.Runtime.InteropServices
Public Class Form1
    Const OPEN_EXISTING = 3
    Const GENERIC_READ = &H80000000
    Const GENERIC_WRITE = &H40000000
    Const INVALID_HANDLE_VALUE = -1

    Const LED_1_ON = &H4001060
    Const LED_2_ON = &H4001070
    Const LED_3_ON = &H4001080
    Const LED_4_ON = &H4001090

    Const LED_1_OFF = &H4001061
    Const LED_2_OFF = &H4001071
    Const LED_3_OFF = &H4001081
    Const LED_4_OFF = &H4001091

    Private hPort As IntPtr
    Declare Function CreateFile Lib "coredll.dll" Alias "CreateFile" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As IntPtr, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As IntPtr) As IntPtr
    Declare Function DeviceIoControl Lib "coredll.dll" Alias "DeviceIoControl" (ByVal hDevice As System.IntPtr, ByVal dwIoControlCode As Long, ByVal lpInBuffer() As Byte, ByVal nInBufferSize As Long, ByVal lpOutBuffer() As Byte, ByVal nOutBufferSize As Long, ByVal lpBytesReturned As Long, ByVal lpOverlapped As System.IntPtr) As Boolean

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
            Dim led1() As Byte = {0}
            Dim pout(10) As Byte
            DeviceIoControl(hPort, LED_1_ON, led1, 0, pout, 0, 0, IntPtr.Zero)     '在這里修改LED_1_ON就可以對(duì)所有的LED進(jìn)行操作
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
            Dim led1() As Byte = {0}
            Dim pout(10) As Byte
            DeviceIoControl(hPort, LED_1_OFF, led1, 0, pout, 0, 0, IntPtr.Zero)
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Try
            hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
            Dim led1() As Byte = {0}
            Dim pout(10) As Byte
            DeviceIoControl(hPort, LED_2_OFF, led1, 0, pout, 0, 0, IntPtr.Zero)
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Try
            hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
            Dim led1() As Byte = {0}
            Dim pout(10) As Byte
            DeviceIoControl(hPort, LED_3_OFF, led1, 0, pout, 0, 0, IntPtr.Zero)
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Try
            hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
            Dim led1() As Byte = {0}
            Dim pout(10) As Byte
            DeviceIoControl(hPort, LED_4_OFF, led1, 0, pout, 0, 0, IntPtr.Zero)
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Try
            hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
            Dim led1() As Byte = {0}
            Dim pout(10) As Byte
            DeviceIoControl(hPort, LED_2_ON, led1, 0, pout, 0, 0, IntPtr.Zero)     '在這里修改LED_1_ON就可以對(duì)所有的LED進(jìn)行操作
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        Try
            hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
            Dim led1() As Byte = {0}
            Dim pout(10) As Byte
            DeviceIoControl(hPort, LED_3_ON, led1, 0, pout, 0, 0, IntPtr.Zero)     '在這里修改LED_1_ON就可以對(duì)所有的LED進(jìn)行操作
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        Try
            hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
            Dim led1() As Byte = {0}
            Dim pout(10) As Byte
            DeviceIoControl(hPort, LED_4_ON, led1, 0, pout, 0, 0, IntPtr.Zero)     '在這里修改LED_1_ON就可以對(duì)所有的LED進(jìn)行操作
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub
End Class
沙發(fā)
發(fā)表于 2011-7-19 11:21:10 | 只看該作者
是這樣的,你上了os就只能先脫褲子再放屁了,這叫流程

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产麻豆91久久久久久 | 欧美巨大精品欧美一区二区 | 欧美久久久久久久一区二区三区 | h视频国产 | 国产三级久久久精品三级 | 日韩欧美视频一区二区 | 国产日韩久久久精品影院首页 | 四4虎在线 | 色噜噜狠狠狠综合曰曰曰 | 免费欧洲毛片a级视频 | 国产三级网站在线观看 | 午夜诱惑福利 | 青青草原在线新免费 | 国产免费久久精品99 | 国产高清国内精品福利99久久 | 久久最新网址 | 9久久9久久精品 | 久爱www成人网免费视频 | 操操综合| 日韩一区二区在线免费观看 | 国产一级一片免费播放 | 欧美激情一区二区三区不卡 | 黄色片视频免费观看 | 亚洲欧美日韩在线观看看另类 | 久久精品亚洲欧美va | 嫩草成人影院 | 四虎国产精品永久地址49 | 亚洲欧美中文日韩在线 | 国产一页 | 黄片毛片视频 | 8天堂资源在线官网 | 在线观看国产免费高清不卡 | 91色视频在线观看 | 玖玖精品在线视频 | 欧美在线黄色 | 国产乱人视频免费观看 | 国产一级毛片a午夜一级毛片 | 欧美另类在线观看 | aa级国产女人毛片水真多 | 黄在线观看免费 | 一级毛毛片毛片毛片毛片在线看 |