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

查看: 4149|回復: 1
打印 上一主題 下一主題

[提問] 初學ARM11,自己在OK6410上寫了一個LED程序,但有幾個地方不太明白

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

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就可以對所有的LED進行操作
        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就可以對所有的LED進行操作
        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就可以對所有的LED進行操作
        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就可以對所有的LED進行操作
        Catch ex As Exception
            MsgBox("操作LED失敗")
        End Try
    End Sub
End Class
沙發
發表于 2011-7-19 11:21:10 | 只看該作者
是這樣的,你上了os就只能先脫褲子再放屁了,這叫流程
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九久久国产精品 | 欧美在线视频一区在线观看 | 成为人视频免费视频播放 | 欧美乱人伦中文在线观看不卡 | 麻豆久久 | 成在线人视频免费视频 | 好爽毛片一区二区三区四区 | 国产剧情jvid在线观看 | 97免费观看视频 | 亚洲成a人 | 亚洲国产欧美久久香综合 | 色综合久久88色综合天天提莫 | 日本欧美成人 | 自拍偷拍小视频 | 青青草 久久久 | 天天操天天干天天拍 | 日本www色视频成人免费网站 | 久久国产经典视频 | 青青草原国产在线 | 好吊色欧美一区二区三区视频 | 亚洲精品免费在线观看 | 四虎91| 美女视频在线观看免费网 | 国产免费久久精品99久久 | 日韩精品视频美在线精品视频 | 欧美日韩精品高清一区二区 | 91香蕉国产亚洲一区二区三区 | 免费在线观看毛片 | 中文精品视频一区二区在线观看 | 四虎影院精品在线观看 | 日韩一区在线视频 | 久久国产美女免费观看精品 | 精品99久久| 99免费视频观看 | 久久九九青青国产精品 | 色欧美片视频在线观看 | 中文在线亚洲 | 日韩精品首页 | 亚洲色图综合 | 国产91精选在线观看麻豆 | 涩涩久久|