首页 > 评测 > 拇指兄弟的比拼战——Arduino AVR VS Arduino STM32

拇指兄弟的比拼战——Arduino AVR VS Arduino STM32

Arduino   STM32   AVR   单片机   
  • 作者:高扬
  • 来源:21ic
  • [导读]
  • Arduino一般是一个带有AVR单片机的完整系统板(一般的,也有Arduino用arm处理器,比如用STM32)。Arduino更倾向于创意,它弱化了具体的硬件的操作,它的函数和语法都非常简单,而且非常“傻瓜”。因此,Arduino在创客的世界是一个非常方便轻松实现“想法”的神器。

我们看到程序中,对端口0和1配置的高低电平交替并延时,也就是如果接LED的话表现为闪烁。那么电路原理图中给出的只有端口1(PB1)连接了LED,且高电平点亮。我们权且不动这个代码。接下来编译烧录测试。

我们这个时候还是不应该把开发板连接到PC的USB接口的,我们要先进行编译并上传,如下图所示。

图片10.jpg

按下上传选项或按钮后,系统即对代码进行编译,编译后出现如下图提示信息,要求连接设备的提示。

图片11.jpg

根据提示连接开发板和电脑USB接口,在等待几秒后,完成代码上传到MCU,即出现如下提示的成功消息。

图片12.jpg

说明:根据这个例程,我们可以知道在该环境下,端口名字就是:0~5对应P0~P5六个端口。如何重新给该端口起个名字呢?查找例程,可知通过int xxx =###的形式来重新定义端口的名字,如下图所示。

图片13.jpg

我们按照例子重写刚才的程序测试,如下图,证明这个思路是正确的。

图片14.jpg

关于管脚复用的其他功能,我们这里不再赘述,请根据相关头文件的配置来使用其他功能,并参考相关的Arduino软件编写相关教程,以及其他的示例程序。

Maple mini(STM32F103)软件开发流程

Maple Mini是Leaflabs推出的Maple的微型版本,其大小相当于一片口香糖。尽管尺寸很小,Maple Mini上还是有一个mini-B型USB接口,有LDO稳压器,可以非常方便的作为一个ARM处理器平台。Maple Mini适用在对空间要求苛刻的场合,也可以插在面包板上做原型开发。

由于官方没有提供移植开发环境至Arduino IDE官方最新版的json文件链,因此我们只能找到Leaflabs移植好的变种Arduino—maple-ide-0.0.12。这也是目前最新的一个版本。经笔者测试兼容Win10,如果使用的是Win8.1或更新版本的Windows系统,在安装驱动前需要禁用驱动程序强制签名。具体步骤请在搜索引擎搜索“禁用驱动程序强制签名”。

下载好Maple IDE后,解压缩,其中drivers文件夹就是所需要的驱动程序,连接PC和Maple Mini开发板,打开设备管理器。

图片15.jpg

选择Maple 003,单击右键手动安装驱动程序,如下图,找到驱动文件夹。

图片16.jpg

完成后,感叹号消失,表明驱动安装成功。

图片17.jpg

接下来启动Maple Mini,选择开发板,建立示例程序。

单击:Tools—Board—LeafLabs Maple Mini Rev2 to RAM(或Flash)。注意到这里有两种选择,一个是下载到RAM,一个是把目标代码下载到Flash。有什么区别呢?下载到RAM后运行速度快,断电后呢,程序不保存,下载到Flash断电后程序不消失,重新上电可以继续运行。

图片18.jpg

接下来选择示例程序。

单击File—Examples—Digital—Button。这里我们选择个按键例程测试,见下图,其他的例程也都是可以的。

图片20.jpg

之后弹出例程窗口,我们可以看到界面是英文的。

图片20.jpg

如上图所示,其中向右的箭头就是Upload(上传)按钮,我们现在可以连接Maple mini和PC。单击Upload按钮。

之后在下面绿色消息窗口显示处理进度与内容。

图片21.jpg

下面我们通过按下开发板的唯一用户按键试试。

我们回过头来再来看代码中的内容,采用了宏定义替代了Arduino惯用的数字编号,那么在哪儿找到这个宏定义的文件呢?答案就在\hardware\leaflabs\cores\maple\maple_mini.h头文件。如下图所示。

图片22.jpg

如上图所示,根据头文件中的宏定义,可以看出来,按键是在32号管脚,LED是在33管脚,对照开发板上标注的编号,刚好对应。我们根据这个头文件也知道了,如果使用其他编号的管脚,可以使用什么宏定义来替代管脚编码。而对于其他的操作也可以在同一文件夹下的其他头文件中找到,比如isButtonPressde()、toggleLED()等,这些均在io.h文件。

写到这里,大家应该发现了吧,不管Arduino怎么变化,总之都是在Arduino技术规范内的,不管是AVR的八位机,还是ARM的32位机器,只要在这个标准内,都可以用简单的Arduino标准,来操作。

我们也可以清楚的看出,这两个开发板虽然核心千差万别,但是开发流程几乎一模一样,除了Maple mini需要使用变种版的Arduino来实现外,而对于寄存器和外设的处理方式都是符合Arduino标准的。我们唯一要做的就是了解开发板提供了哪些资源,这些资源在Arduino的框架里定义成了什么名字,另外就是根据开发板的原理图,加入自己需要的部分。而对于想全面掌控MCU系统的每个细节的人,还是需要按照传统的方法来做,不过Arduino的确缩减了嵌入式的学习所用的时间成本,以及更加方便的使用体验,更适合要求不是非常非常高的用户和应用的使用。

另外本测评中所选用的开发板上,均是只有一片MCU,无需使用编程器进行烧录,因为他们都内置了Bootloader程序,这也做到了真正的单片机的单片系统应用。

附件:http://pan.baidu.com/s/1c2DdPyK

 

本文系21ic原创,未经许可严禁转载

  • 本文系21ic原创,未经许可禁止转载!

网友评论