STM32和Arduino对比,谁更厉害?

前两天有一个同学问我嵌入式的学习路线

他是一个大三的学生,我看了他的简历,里面几乎没什么项目经验,对于企业来说这样的学生就好比一张白纸一样,当然,这样的学生很难拿到一份好的offer。

学习路线的文章我记得已经发了很多次了,在知识星球里面也有提了很多次,不管是谁,如果你是想从事嵌入式,还是要从51开始,我今天看到这篇文章,然后有了个新的想法,如果你想从事应用开发,可以试试Arduino这样成熟的开发板,他们的封装性、稳定性更加好,几乎不用你去关心底层硬件的很多细节。

但是如果你想从事的是嵌入式软件,我建议还是要从51、STM32、rtos、Linux的路线去学习。后面的话,可以只选择rtos和Linux其中一种,毕竟想学好两个多任务系统,并且学好是很难的。

在学习的时候像一些常见的外设和总线也要一并学习了,总线时序是嵌入式底层的基础。

4bd217c9c21fe3f0e33534c7cf7c9731.png

以下是内容正文

-----

Arduino和STM32性能对比究竟谁更厉害呢?

很多电子爱好者面对Arduino和STM32时都会有个两难的决定,不知道如何选择使用。Arduino一直处在火热状态,但是STM32接口多性能强,速度也较快?

Arduino和STM32各自的特点

Arduino:

c66a122508d92918e147a9d545b512e6.png

Arduino更倾向于创意,它弱化了具体的硬件的操作,它的函数和语法都非常简单,而且非常“傻瓜化”。

大部分Arduino的主控是AVR单片机,Arduino的优势还是代码封装性高,所需语句少,降低软件的开发难度。

Arduino上手比较容易,只要懂一点点硬件和C++就能开发。

Arduino大多数功能都有做好了的库,所以使用起来很简单,但是对于稍微复杂点的功能可控性较差。

STM32:

2f87926b88724509926a9fb13eab85c2.png

对于有计算或控制要求的,STM32是更好选择。STM32如果买开发板的话就要从硬件底层学起,掌握它的各种细节。

STM32更注重工程实际,事实上工厂中很多简单的仪器什么温控仪,什么普通的电机控制器,什么低档PLC,还有民用中的一些玩具,游戏手柄、有线键盘鼠标等外设,高校食堂里刷卡的pos机等等其实用得很多。

STM32主要是给专业开发人员做产品用的,需要一定的专业知识,但同时编写代码实现功能也相对复杂。比如串口输出一个简单的字符串,对于Arduino可能从新建工程开始,10行代码就能实现,但是如果使用STM32的开发工具比如Keil,可能需要上百行代码甚至更多,串口相关实例:按下按键,通过串口发送数据实例。

Arduino和STM32对比

Arduino有很多个版本,特性也并不一致,如果拿Arduino UNO R3这个最普遍的来说的话,它的控制器是AVR 138单片机,性能上和STM32不在一个水平上,该款在某种程度上和宏晶的STC12系列差不多(仅在运算上),Arduino MEGA 2560 这款算是MCU版的Arduino中的老大了,接口丰富,应该和STM32F1系列不相上下,但是功耗挺大,芯片发热明显,而同款封装的STM32F1ZET6则仅有微热,环境温度低的时候甚至感觉不到有温度。

根据两者的不同特性我们可以按照不同应用来比较:

在学习容易程度方面:Arduino相对于STM32容易很多。

要求的基本编程思想:Arduino:面向对象的类C++、类Java为主,它的语言基于C但是又有些四不像。而STM32则以正统的C语言为主要开发语言,相关推荐:嵌入式开发为什么选择C语言?

学习后获得的知识:Arduino弱于STM32。

因为Arduino封装了很多底层操作。除非自己尝试编写Arduino以及配套电路模块的库,否则还只是停留在基础的编程上。

开源程度上:

用STM32做出来的东西想开源就开源,不想开源可以什么都不公布。

外围电路搭建难易程度:Arduino远大于STM32。

可拓展性:Arduino与STM32相当,Arduino基本上把控制器的大部分引脚都印出来了。

成本:假设做出具有相同功能的东西:Arduino成本高于STM32。  

94706ff509d271499d967bbfeb5920bc.png

总结一下

如果还不知道怎么选择,这里给出选择建议:

  • 如果你是对编程语言了解不深的大学层次以下的普通学生,建议上手Arduino

  • 如果C功底薄弱上来就搞STM32你会很快有放弃的念头

  • 如果只是为了就业而学习,果断STM32类单片机

  • 如果只是为了好玩而学习,本身非电子类专业,没有信心,建议Arduino

  • 如果编程功底好,建议STM32。搞定之后你看看Arduino开源社区做的东西,用STM32轻轻松松搞定

  • 当然如果有能力,两者都接触接触,一般地一周不到Arduino的基本特性你就掌握了,以后有需要的话,可以很自如地移植Arduino代码到STM32等MCU平台上。

其实这两者其实针对的方向略有不同,Arduino一般电子爱好者和DIY的选择,而STM32往往用于实际产品的研发制造。但是现在Arduino系列也能支持STM32的芯片,通过先下载Arduino固件,后就能使用Arduino的开发环境进行编程了。根据自己项目类型和需求选择适合自己的才最重要。

a8f11f8bbfde3d0536423e109f538628.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人大计算机在职考研好考吗,人大在职研究生好考吗?通过率高吗?

答:最近咨询人大在职研究生进行学习的人非常多,其中咨询最多的问题是考试难度及通过率。下面就通过在职研究生招生信息网为大家介绍一下,人大在职研究生好考吗?通过率高吗?人大在职研究生招生是采用同等学力申硕的方式,该方式是…

可能你还不懂浮点数

在网上看到一个问题然后看到这篇关于浮点数的文章,希望大家看了之后有所启发想一下,为什么第一个打印的和预设值不同,但是第二个是相同的?如图:尾数部分是如何转变成二进制的?前言很多人在初学写程式时都会…

RTP协议的封装

最近一段时间学习了RTP协议相关的内容,一方面为了将自己学到的部分记录下来,便于后续查找,另一方面用于记录笔记 一个协议的封装是为了满足协议的功能需求的。从前面提出的功能需求,可以推测出RTP封装中应该有同步源和时戳等字段&…

Alpha冲刺(7/10)

团队信息 队名:爸爸饿了组长博客:here作业博客:here组员情况 组员1(组长):王彬 过去两天完成了哪些任务 学会了POSTMAN的使用,对后端已经完成的接口进行了收发消息正确性的验证推进项目进度&…

epoll模型之服务器设计

Linux2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE…

不限学历、不限学校、华为天才少年招聘

我在前同事的朋友圈看到的招聘信息。不限学历,不限学校我相信这个规则一定会让后续的很多企业效仿,工作至今,遇到很多能力很强但是学历一般的人,而对于面试者,可以大胆的说出那句话,人家华为都不限制学校学…

linux学习第九天 (Linux就该这么学)

今天讲了raid0 至少两块盘串联在一起,读写性能提升,但不具备数据备份和错误修复能力,RAID1把两块盘绑定,在写入数据时,同时写入到多块硬盘设备,raid5推荐使用,10推荐使用 LVM,今天是在外面加班…

[Windows Phone] 为应用添加后台计划任务 – Scheduled Task Agent

前段时间做过一个天气应用,一直是只支持前台获取数据,上周末参加了Windows Phone的CodeJam和高手们交流了一下,发现实现后台定时更新功能也不是很难,于是在网上找一些资料,在找资料的过程中发现,网上的一些…

全能终端神器MobaXterm

摘要:现今软件市场上有很多终端工具,比如:secureCRT、Putty等等。secureCRT其实也是一款很强大的终端工具,但它是收费软件,一般公司不允许使用。Putty,非常小巧,免费软件,但是不支持…

入群问的这道C题目,还没人答对

最近好几个同学加我微信&#xff0c;让我帮忙拉他入群&#xff0c;然后我就随手问了个题目&#xff0c;如下上面回答的答案都是不正确的sizeof是 C语言的关键字&#xff0c;这个关键字是用来计算传入参数占用的内存字节数。比如#include <stdio.h> int main() {int a 1;…

常见单元测试工具介绍

1. C/C语言开发的首选利器- CTest 以前在windows平台下的开发&#xff0c;使用的框架主要是MFC&#xff0c;以及console工程&#xff08;基于win32SDK&#xff09;&#xff0c;属于纯C/C开发的范畴。 因此&#xff0c;使用的单元测试工具&#xff0c;主要有CTest和CppUni…

win10系统的服务器在哪里设置密码,window10怎么设置密码

window10怎么设置密码Windows 10 系统中可以用自己喜欢的图片结合手势来设置登陆密码&#xff0c;很酷很有个性&#xff0c;如何操作呢&#xff1f;1、从开始菜单中打开“设置”应用(也可以通过其他的方式打开“设置”应用&#xff1b;从通知中心打开&#xff1b;从搜索框中搜索…

Linux 启动优化实战-2.41 秒启动应用!

系统启动是一个大问题&#xff0c;前段时间有同学也问了我这个问题&#xff0c;不仅仅是Linux&#xff0c;Android 下面的启动优化也可以借助bootchar来分析。下面正文是老吴的实操过程。哦&#xff0c;对了&#xff0c;上篇文章有同学问文章的封面&#xff0c;这里贴出来&…

腾达fh307没有显示服务器名,腾达(Tenda)FH307路由器上网设置 | 192路由网

本文介绍了腾达(Tenda)FH307路由器的安装、上网设置方法&#xff0c;同时分别介绍了“ADSL(PPPOE)拨号”、“动态IP”、“静态IP”三种上网方式的区别&#xff0c;以及在腾达(Tenda)FH307路由器上的详细设置。腾达(Tenda)FH307无线路由器一台新购买的腾达FH307路由器实现上网&a…

记得重用layout

2019独角兽企业重金招聘Python工程师标准>>> 这样的布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:layout_width"…

sql2000-2 4/19

SQL2000客戶的上次問題後來H盤自動毀掉了昨天換了顆新硬碟,當資料庫挂上之後,H一直又提示錯誤,後來還是將資料庫路徑設為I傍晚時分親眼目睹了H所有資料被自動刪除的過程,待服務器重新啟動後H無法存取萬幸的是早一步將資料庫路徑作了更動在還原資料庫的過程中用克隆的BAK還原一直…

五一加班

前几年五一放假&#xff0c;我们会去小云家&#xff0c;五一也是荔枝成熟的时候&#xff0c;有一年吃上刚从树上摘的荔枝&#xff0c;现在还能记起那种味道&#xff0c;也是那次之后&#xff0c;想奢入简很难了&#xff0c;荔枝也一定要吃新鲜的了。今年一直还没看到荔枝的影子…

win10系统能做域服务器吗,Win10 LTSC 加入 Windows Server 2019 域服务器

前面的文章已经创建了域服务器、创建了域组织单位、用户组、用户&#xff0c;下面是如何把一台 Win10 LTSC 系统的电脑加入到Windows Server 2019 域服务器&#xff1b;0x01 加域准备修改计算机名、修改IP地址DNS指向 Windows Server 2019 域控制器&#xff1b;注意&#xff1a…

离职就打低绩效,这样对吗?

应该不止听见一个人说过&#xff0c;担心离职遇到各种不爽的事情&#xff0c;比如卡你的离职时间&#xff0c;比如让你背很低的绩效&#xff0c;比如你今年的年终奖就没有了&#xff0c;再比如&#xff0c;你和原来玩得好的同事突然就没话说了。我记得很清楚的事情是&#xff0…

+ 网页制作效果常用代码

控制横向和纵向滚动条的显隐&#xff1f;<body style"overflow-y:hidden"> 去掉x轴<body style"overflow-x:hidden"> 去掉y轴<body scroll"no">不显表格变色<TD οnmοuseοver"this.style.backgroundColor#FFFFFF&qu…