学会BASIC,轻松玩转单片机

BASIC作为微软帝国的开国元勋,始终未被微软抛弃,即使C#作为微软的第一推荐语言。

BASIC有着语法接近自然语言,语法简单的特点,深受众多程序设计人员的喜爱,不论是国内还是国外,都有着大量的BASIC程序设计人员。

在嵌入式开发领域一直都是C、ASM的天下,如今随着高级程序设计语言的不断发展以及嵌入式MCU硬件资源的集成度越来越高,BASIC语言也被应用到了嵌入式开发中。

今天给大家介绍的是一款完全免费的BASIC单片机开发工具,采用非常接近于Visual BASIC的语法格式,快速的开发单片机应用。

官方网址:https://www.b4x.com/b4r.html(这是一个完全免费的软件,任何人都可以自由下载和传播)

从官网的介绍,它可以为Arduino开发板和ESP8266、ESP32开发板编写程序,并且是本地代码,即HEX。

事实上,随着Arduino开发环境不断的有第三方硬件的支持,B4R将支持更多的开发板。

现在来带领大家领略B4R的开发特点吧。

(1)GPIO就像VB6中的按钮一样简单

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.
    Public Serial1 As Serial
    Public button As Pin    '定义一个按钮
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    button.Initialize(2,button.MODE_INPUT_PULLUP) '初始化GPIO2,并设置为内部上拉输入
    button.AddListener("button_StateChanged")    '绑定到状态变更事件
End Sub

Private Sub button_StateChanged (State As Boolean)
    If State=False Then
        '当按钮被按下时,处理事件
    End If
End Sub

从上面的代码,大家可以看到,一个输入按钮被简化成为类似VB6中的按钮一样简单。

(2)软定时器

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.
    Public Serial1 As Serial
    Public led As Pin    '定义一个指示灯
    Public tme1 As Timer '定义一个软定时器
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    led.Initialize(2,led.MODE_OUTPUT)    '初始化GPIO2为推挽输出
    tme1.Initialize("tme1_Tick",1000) '初始化软件定时器为1秒触发一次
    tme1.Enabled=True '启动定时器
End Sub

Private Sub tme1_Tick
    led.DigitalWrite(Not(led.DigitalRead))    '反转一次LED电平,实现1秒闪烁一次LED
End Sub

软定时器不受硬件定时器数量限制,它就像Basic中的定时器一样的简单,并通过事件的方式驱动。

(3)以太网支持

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.
    Public Serial1 As Serial
    Public eth As Ethernet    '定义以太网接口
    Public udpc As EthernetUDP    '定义一个udp客户端
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    '初始化以太网,并从尝试从DHCP获取IP地址
    If eth.InitializeDHCP(Array As Byte(0x2D,0x0A,0x77,0xFF,0x25,0x40)) Then
        '如果获取成功,则初始化UDP套接字
        If udpc.Initialize(8081,"udpc_PacketArrived")=False Then
            Log("Error UDP.")
        End If
    End If
End Sub


Private Sub udpc_PacketArrived (Data() As Byte, IP() As Byte, Port As UInt)
    '处理UDP数据接收
    If Data(0)=0x22 And Data(1)=0x23 Then
        Log("Command in.")
    End If
End Sub

事实上,B4R所支持的不仅限于此,它大大提高了嵌入式程序开发的效率、代码的可移植性、可维护性,并且支持Arduino的大量开源库,使得程序开发变得更加简单。

到目前为止,B4R可以为Arduino、ESP、nRF52、LGT8、STM32进行程序开发。

猜你喜欢

转载自blog.csdn.net/SANTOOK/article/details/89349740