|
01 9 }4 }5 X0 ]9 R+ V( ^5 h$ F 前两天,有一位同学问我嵌入式的学习路线。他是一个大三的学生,我看了他的简历,里面几乎没什么项目经验。对于企业来说,这样的学生就好比一张白纸一样。当然,这样的学生很难拿到一份好的offer。 9 I1 ]6 w4 I- u9 X+ d3 v$ H5 i# z关于学习路线,大家可以参考这篇文章《[color=var(--weui-LINK)]成为嵌入式高手的技能清单和升级线路图》。其实不管是谁,如果你想从事嵌入式工作,我觉得还是要从51开始。我今天看到这篇文章,然后有了一个新的想法,如果你想从事应用开发,可以试试Arduino这样成熟的开发板,因为它的封装性、稳定性更好,几乎不用你去关心底层硬件的很多细节。 ( K; T. b) g8 F- g, b但是,如果你想从事的是嵌入式软件,我建议还是要从51、STM32、rtos、Linux的路线去学习。后面的话,可以只选择rtos和Linux其中一种,毕竟想搞懂两个多任务系统,并且学好它们是很难的。 - C \( ~1 ?/ C( Y在学习的时候,像一些常见的外设和总线也要一并学习了,总线时序是嵌入式底层的基础。 ; u' f/ L+ B* w% {5 h02 Arduino和STM32性能对比,究竟谁更厉害呢?) r# b/ B/ E2 f' H 很多电子爱好者面对Arduino和STM32时,都会有个两难的决定,不知道如何选择使用。 Arduino一直处在火热状态,但STM32接口多性能强,速度也较快……下面,我们就来谈一谈Arduino和STM32各自的特点。4 L/ \; ~# {6 b( h1 x5 {0 K Arduino:
Arduino更倾向于创意,它弱化了具体的硬件的操作,它的函数和语法都非常简单,而且非常“傻瓜化”。- n3 h+ g; @+ _ 大部分Arduino的主控是AVR单片机,Arduino的优势还是代码封装性高,所需语句少,降低软件的开发难度。 Arduino上手比较容易,只要懂一点点硬件和C++就能开发。 & B% ~9 M1 a3 R ~! n9 D Arduino大多数功能都有做好了的库,所以使用起来很简单,但是对于稍微复杂点的功能可控性较差。 STM32:2 J( O4 g N# }9 u( \+ P
6 V2 t! o( W7 p 对于有计算或控制要求的,STM32是更好选择。STM32如果买开发板的话就要从硬件底层学起,掌握它的各种细节。4 `9 b/ q3 P: B1 c5 Y STM32更加注重工程实际,事实上,工厂中很多简单的仪器什么温控仪,什么普通的电机控制器,什么低档PLC,还有民用中的一些玩具,游戏手柄、有线键盘鼠标等外设,高校食堂里刷卡的pos机等等其实用得很多。 STM32主要是给专业开发人员做产品用的,需要一定的专业知识,但同时编写代码实现功能也相对复杂。 比如串口输出一个简单的字符串,对于Arduino可能从新建工程开始,10行代码就能实现,但是如果使用STM32的开发工具比如Keil,可能需要上百行代码甚至更多。; c* C, {% K( I0 ?, l% \ 03 ) E2 Z. y/ Y% w" m/ o 4 o; B8 S* @8 S2 [5 G- SArduino和STM32对比: q+ S. \8 v! @& }1 _4 |8 X% u" BArduino有很多个版本,特性也并不一致,如果拿Arduino UNO R3这个最普遍的来说的话,它的控制器是AVR 138单片机,性能上和STM32不在一个水平上,该款在某种程度上和宏晶的STC12系列差不多(仅在运算上)。! C5 m6 q; z* z" }' e1 i Arduino MEGA 2560 这款算是MCU版的Arduino中的老大了,接口丰富,应该和STM32F1系列不相上下,但是功耗挺大,芯片发热明显,而同款封装的STM32F1ZET6则仅有微热,环境温度低的时候甚至感觉不到有温度。( {$ r# N8 {# N# t2 ^ 根据两者的不同特性,我们可以按照不同应用来比较:- O1 T; l) B+ [$ z% Q ; Q( X, _& O4 k+ b5 v7 P/ j( V 首先,在学习容易程度方面,Arduino相对于STM32容易很多。! K, `& g$ {' @( A& { ; F' `; I5 z) \ 其次,二者要求的基本编程思想也不同。Arduino:面向对象的类C++、类Java为主,它的语言基于C但是又有些四不像;而STM32则以正统的C语言为主要开发语言。& f/ Y& d6 T# } 另外,在学习后获得的知识上,Arduino也要弱于STM32。因为Arduino封装了很多底层操作。除非自己尝试编写Arduino,以及配套电路模块的库,否则还只是停留在基础的编程上。# Y. X7 R0 _& e; C8 D 开源程度上:# |4 J* N( q; Z$ @' |' ~4 e, ` 用STM32做出来的东西想开源就开源,不想开源可以什么都不公布。9 g9 Q+ _: E5 r 首先,在外围电路搭建难易程度上,Arduino远大于STM32。 " U5 p0 l/ E8 Z- y' l 其次,在可拓展性方面,Arduino与STM32相当,Arduino基本上把控制器的大部分引脚都印出来了。 最后,再说说成本。假设做出具有相同功能的东西,Arduino的成本往往高于STM32。 04 / K0 D: \7 ~9 E% o& G( M7 Q7 b2 D' {0 u# r* J" t) {7 ? 总结一下,如果你还不知道怎么选择,下面将给出选择建议:$ G5 X3 J# _) O# h" r! F$ p 1. 如果你是对编程语言了解不深的大学层次以下的普通学生,建议上手Arduino; 2. 如果C功底薄弱上来就搞STM32你会很快有放弃的念头;% w( ^7 T/ [3 y 3. 如果只是为了就业而学习,果断STM32类单片机; 4. 如果只是为了好玩而学习,本身非电子类专业,没有信心,建议Arduino;0 T) N5 o* [- U0 Z 5. 如果编程功底好,建议STM32。搞定之后你看看Arduino开源社区做的东西,用STM32轻轻松松搞定。 # w$ a# H$ R& H2 f* Y当然,如果有能力的话,两者都可以接触接触。一般情况下,一周不到Arduino的基本特性就能掌握,以后有需要的话,可以很自如地移植Arduino代码到STM32等MCU平台上。; e2 z* F1 s0 ? 其实,这两者其实针对的方向略有不同,Arduino一般电子爱好者和DIY的选择,而STM32往往用于实际产品的研发制造。 但是,现在Arduino系列也能支持STM32的芯片,通过先下载Arduino固件,后就能使用Arduino的开发环境进行编程了。根据自己项目类型和需求,选择适合自己的才最重要。 END |
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
【福利三:逢7发帖赢大礼】成功利用STM32H743VI片内SRAM12和DTCM空间(完全胜利)
微信公众号
手机版
感觉arduino基本就是调用api,对于底层学习和理解帮助不大,相反会了stm32的,转过去学auduino更简单,选择其他芯片也更容易上手