如果你想从事应用开发,可以试试 Arduino 这样成熟的开发板,它们的封装性、稳定性更加好,几乎不用去关心底层硬件的细节。
如果你想从事的是嵌入式软件,建议从 51、STM32、rtos、Linux 的路线去学习。
Arduino特点
Arduino
更倾向于创意,它弱化了具体的硬件的操作,它的函数和语法都非常简单,而且非常“傻瓜化”。- 大部分 Arduino 的主控是
AVR
单片机,Arduino 的优势还是代码封装性高,所需语句少,降低软件的开发难度。 - Arduino 上手比较容易,只要懂一点点硬件和
C++
就能开发。 - Arduino 大多数功能都有做好了的库,所以使用起来很简单,但是对于稍微复杂点的功能可控性较差。
STM32特点
- 对于有计算或控制要求的,
STM32
是更好选择。STM32 如果买开发板的话就要从硬件底层学起,掌握它的各种细节。 - STM32 更注重工程实际,事实上工厂中很多简单的仪器什么温控仪,什么普通的电机控制器,什么低档
PLC
,还有民用中的一些玩具,游戏手柄、有线键盘鼠标等外设,高校食堂里刷卡的pos
机等等其实用得很多。 - STM32 主要是给专业开发人员做产品用的,需要一定的专业知识,但同时编写代码实现功能也相对复杂。比如串口输出一个简单的字符串,对于Arduino 可能从新建工程开始,10 行代码就能实现,但是如果使用 STM32 的开发工具比如
Keil
,可能需要上百行代码甚至更多。
Arduino和STM32对比
Arduino UNO R3
这个最普遍的来说的话,它的控制器是 AVR 138
单片机,性能上和 STM32 不在一个水平上,该款在某种程度上和宏晶的 STC12
系列差不多(仅在运算上)。Arduino MEGA 2560
这款算是MCU版的Arduino中的老大了,接口丰富,应该和 STM32F1
系列不相上下,但是功耗挺大,芯片发热明显,而同款封装的 STM32F1ZET6
则仅有微热,环境温度低的时候甚至感觉不到有温度。- 在学习容易程度方面:Arduino 相对于 STM32 容易很多。
- 要求的基本编程思想:Arduino 以面向对象的类 C++、类 Java 为主,它的语言基于 C 但是又有些四不像。而 STM32 则以正统的 C 语言为主要开发语言。
-
学习后获得的知识:Arduino 弱于 STM32。因为 Arduino 封装了很多底层操作。除非自己尝试编写Arduino以及配套电路模块的库,否则还只是停留在基础的编程上。 -
开源程度上:用 STM32 做出来的东西想开源就开源,不想开源可以什么都不公布。 -
外围电路搭建难易程度:Arduino 远大于 STM32。 -
可拓展性:Arduino 与 STM32 相当,Arduino 基本上把控制器的大部分引脚都印出来了。 -
成本:假设做出具有相同功能的东西:Arduino 成本高于 STM32。
Arduino 一般电子爱好者和 DIY 的选择,而 STM32 往往用于实际产品的研发制造。
现在 Arduino 系列也能支持 STM32 的芯片,通过先下载 Arduino 固件,后就能使用 Arduino 的开发环境进行编程了。
所以,根据自己项目类型和需求选择适合自己的才最重要。
来源:大鱼机器人(公众号)
相关文章:Arduino和ESP32简单对比。