打印
[应用方案]

新手想玩硬件,买单片机还是树莓派好?

[复制链接]
2407|56
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 suncat0504 于 2022-2-18 08:45 编辑

#有奖活动# #申请原创#    @21小跑堂
       作为电子爱好初学者而言,现在可供学习的电子技术太多。没办法,电子技术的发展,和其它行业一样,专业方向越来越多,越来越精细。以往像51单片机这样的8位单片机打天下的时代,早过去了,今天你耳朵里充斥的单片机,已经是以32位的为主了。程序开发上,也从针对性的专用程序,扩展到基于操作系统上的二次开发。为了方便爱好者学习,处理器的型号和开发板也大量出现,还提供丰富的例程。对初学者而言,是不是有眼花缭乱的感觉?
       那么,对于一个新手而言,是从单片机开始学习起,还是树莓派学习起呢?这个我不好说。因为这个“新手”没说指的是哪种新手。如果是没有一点程序开发基础的,那毫无疑问,还是从单片机学起吧。如果是有丰富的linux程序开发经验的,想学习硬件开发的,那可能直接学习树莓派更好一些。为啥这么说呢(我的一家之言哈)?让我们花点功夫掰扯掰扯哈。单片机,通常指的是诸如51单片机,PIC单片机之类的单片机,爱好者们可以直接从市场上买回来一片双列直插(DIP封装)的单片机,直接在面包板上就能搭建起来硬件的测试环境。即便是现成的开发板也不是很贵,也很容易买得到。一般裸片的单片机,只要有通用编程器,就可实现擦写、编程。有开发板的,开发板可以直接在线编程、测试。

1:单片机

2:单片机开发板

3:编程器
       那么树莓派是什么东西呢?它是一种卡片式电脑。看清楚没?是一种电脑,有操作系统的!是一种微型电脑主板,有的树莓派配有USB接口和以太网接口,可连接键盘、鼠标和网线、视频输出接口,具备计算机的基本功能。能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能应用。

4:树莓派开发板
       看清楚了吧,区别是不是很大?单片机及面向单片机的开发板,通常是有针对性的用于控制类的开发,你只要会汇编或者C,照着例程学习就行。当然如果熟悉单片机的构成原理那是最好了,反正单片机内部也没有多少寄存器,也不是很复杂,稍微花点功夫就能搞懂。可树莓派就不一样了,这个通常是已经注入了操作系统的,一般是linux。要想在树莓派上进行开发,那可是二次开发哟(我感觉,大多数的树莓派爱好者,应该不是搞底层系统开发的吧)。没有linux开发基础,想当然地以为像开发单片机程序那样开发树莓派,肯定是不行地。我的感觉,学习树莓派,更像是学习linux程序开发。如果想以树莓派控制其他有接口协议的硬件设备(比如蓝牙模块),恐怕linux底层驱动发开也跑不了。谈及软件开发,对于搞了20几年软件开发的我,头疼的很,感觉就是一句话:永远学不完,一直都在学习中!单片机开发就简单了,学好汇编(这个已经不常用了)和C就能一直玩下去。可以说,学习单片机硬件开发就是一个小坑,而软件开发就是一个深渊。这么说,可别吓着您。树莓派虽然比较难,但架不住学啊,谁也不是天生就会,对吧?再者说了,人的一生中,有比活着这件事儿更难的么?这么难的事儿,我们都办到了,其它的还算事儿吗?!
       归纳起来,单片机开发,底层控制多一些;树莓派开发,应用层面多一些。不管是单片机,还是树莓派,看您需要,用到哪个就学哪个!不会?没关系啊,撸胳膊、挽袖子、闷头,边学边干!


  

使用特权

评论回复
沙发
mxkw0514| | 2022-2-18 16:27 | 只看该作者
为什么说软件开发永远也学不完呢?

使用特权

评论回复
评论
suncat0504 2022-2-21 17:10 回复TA
@huarana :你说的对。但对于我们这样的硬件开发者,你会放弃诸如STM32那样的提供的开发包不用么?我觉得这里你在偷换概念,我说的硬件开发,指的是二次开发。你如果搞是硬件开发的,会放弃开发包,自己在汇编基础上重新建立一个自己的开发包?如果你是搞芯片设计的硬件工程师,当我没说。 
huarana 2022-2-21 10:28 回复TA
@suncat0504 :你恰恰说的是软件 - -, 什么库,什么程序 都算软件了。 硬件指的是 原理图,pcb,模拟电路设计,emc,抗干扰,信号完整性。。。 在笼统一点就是有一个需求,要分析用什么样的硬件来实现,原器件选型 ,电阻电容电感变压器的参数计算。。。 这些才算正儿八经硬件。你说的什么编程器,库什么的操作中断定时器这都算软件了。 
suncat0504 2022-2-18 19:47 回复TA
@huarana :你所说的相通,指的是语言的代码类似,但忽略了本质上的东西------概念。比如学C语言,很简单,基本上就那些关键字和库函数,属于过程语言。但C++,属于面向对象的语言,加入了太多的东西,难度级别完全不是一个概念。我说的不断学习,指的就是这些新东西。 
suncat0504 2022-2-18 19:37 回复TA
@suncat0504 :笔误,“尽管元器件一样”----》“尽管元器件不一样” 
suncat0504 2022-2-18 19:36 回复TA
@huarana :硬件开发,尽管元器件一样,但只要选择合适的编译器,加上库程序包加持,在此基础上的二次开发差不多都一样。至少我是这样看的,目前在51单片机和STM32的Keilc开发上没看到本质区别。比如IO口操作、中断处理、定时器操作。这是硬件结构的本身固有的特点。 
suncat0504 2022-2-18 19:31 回复TA
@huarana :面向过程的语言和面向对象的语言是完全不同概念的,比如C和C++,类、封装、继承、多态性。架构那种东西,你不深入理解的话,很多东西做不下去。每种数据库都有自己的特殊函数、系统表。linux系统和windows系统的不同,不是几个命令的不同,而是系统构成的不同,完全不一样,所以底层开发和应用开发也不一样。 
huarana 2022-2-18 17:58 回复TA
@suncat0504 :软件虽然多,但是基本都是相通的,精通其中一种,再学其他的那就是很快得了。 但是硬件不一样,再精通MCU,给你来个FPGA也得肯好久,更不用说什么dsp arm 模拟电路 射频电路 基带 emc ,plc ,x86乱七八糟一大堆东西。 
suncat0504 2022-2-18 16:38 回复TA
软件开发,不说其他的哈,单说WEB上的开发,光架构就有N多种,每种架构不需要深入学习?软件开发有桌面版的,有WEB版的。开发语言有java,c,c++,C#,VB,python,PHP,jsp,jquery等等等。数据库有mysql,postgresql,ms sql,oracle等等等。我干20多年编程,学习一直就没有停止过。唉,不经历过,就没法体会啊。 
板凳
suncat0504|  楼主 | 2022-2-18 20:15 | 只看该作者
本帖最后由 suncat0504 于 2022-2-18 20:23 编辑

@huarana 我不知道您是从事什么工作的,我呢,做个20多年的软件开发。看到过有些开发语言在不断进化,也有些语言消失,也有新语言产生。不断进化的语言,一定是有原因的,比如增加新的概念和处理方式,比如增加新的处理机能。web开发上,早期的静态网页,到后来的动态网页+数据库支持,从HTML1到HTML5,从网页的单个文件,到增加样式表、动态语言支持等。因为概念不一样,导致编程风格发生了变化。所有这些变化,要求程序员必须去学习、去适应。单单说操作系统对开发语言的影响吧,如果你以前用过quick basic(过程语言),而不熟悉VB.net,虽然代码很像,那你恐怕是没法用quick basic实现窗体开发,对吧?语言的进化也好、升级也罢,如果不能不断学习,很快就会被淘汰,无需置疑。有时间的话,你去看看Spring的变化有多少版本了,概念又有哪些变化?可能对我说的理解起来,更直观一些。
硬件开发上,无论是51单片机,还是更高级的32位单片机,都是通过寄存器控制,实现对管脚操作,在半导体硬件构成上,没有本质区别(纯粹的数据处理方面,应算是纯软件的范畴了)。即便FPGA、DSP,都是一样用电阻、电容、门电路,这是半导体电路的共同点。虽然开发语言有汇编、C、Pascal(当然也需要花时间学习啦),但通用性比较大,选择合适的编译器,程序基本上没有大的区别,不需要专门花太多时间去重新学习。即便芯片的架构不一样,在对IO口操作、对寄存器操作,使用相同的C语言实现,绝对没问题。那些不同的东西,编译器和库函数会为你解决,不需要操心。

使用特权

评论回复
评论
suncat0504 2022-2-21 17:48 回复TA
@huarana :C语言的编程思想,和Java的编程思想还真不是一样的,嘿嘿嘿。 
suncat0504 2022-2-21 17:34 回复TA
@huarana :哦,对了,我以前做过一个VB6转Java的项目,一个cobol转vb6的项目,都是一边学一边做,也就一两天就上手了,那算不算大牛?哈哈哈。你有空买本java编程思想,看看一周下来能不能全部读明白,想必您是搞硬件的,肯定懂C,照您的观点,一周时间学懂java应该不算事儿。 
suncat0504 2022-2-21 17:22 回复TA
@huarana :你始终强调软件的语言问题,而我所表达的除了语言本身,还有相对应的概念,架构。就好比于您觉得盖房子都很简单,无非就是材料的问题。而忽略了不同材料带来的其他变革。从草屋、木房、砖房、砖混房、钢筋混凝土房,改变的不仅仅是材料,还有其他相应的学科的介入,比如工程力学、材料学等等。 
suncat0504 2022-2-21 17:17 回复TA
@huarana :你说的是软件大牛,但话里面,你显然不是搞纯软件开发的,更不是大牛,对吧?隔行如隔山,您一句话,就否定了软件业这几十年的发展,否定了那些资深软件专家对软件发展的贡献。我觉得不太合适,您说呢? 
suncat0504 2022-2-21 17:14 回复TA
@huarana :你说的都是大牛。一个新的架构,就举个例子说吧,spring boot,我还真不信,你认识的大牛一个礼拜就能搞懂。真有这么多大牛,软件这几十年的发展,都给你那几位大牛,岂不是一周就都解决了?哈哈哈哈哈哈 
huarana 2022-2-21 10:31 回复TA
你说的这些全都是软件 - -! 我认识不少软件大牛,他们在遇到新的语言的时候可以做到一个礼拜就用这个语言来做设计了。 什么go, ruby。。。软件的本质是相通的,就是编程思想 ,思想是通的 ,不同语言只是不同的工具而已。 
地板
chenqianqian| | 2022-2-19 13:53 | 只看该作者
玩硬件和这个没关系

使用特权

评论回复
5
两只袜子| | 2022-2-21 11:43 | 只看该作者
学无止境,学海无边,哈哈

使用特权

评论回复
6
tail066| | 2022-2-22 14:38 | 只看该作者
电子线路入手

使用特权

评论回复
7
tpgf| | 2022-3-3 08:08 | 只看该作者
那肯定要选单片机了

使用特权

评论回复
8
weifeng90| | 2022-3-3 08:10 | 只看该作者
你应该问玩软件

使用特权

评论回复
9
观海| | 2022-3-3 08:16 | 只看该作者
树莓派是硬件吗

使用特权

评论回复
10
guanjiaer| | 2022-3-3 08:23 | 只看该作者
还是先看看模拟电路吧

使用特权

评论回复
11
heimaojingzhang| | 2022-3-3 08:35 | 只看该作者
新手应该先了解一下数字电路基础知识

使用特权

评论回复
12
keaibukelian| | 2022-3-3 08:42 | 只看该作者
树莓派是锻炼软件的吧

使用特权

评论回复
13
labasi| | 2022-3-3 08:52 | 只看该作者
入门还是用简单的吧

使用特权

评论回复
14
primojones| | 2022-3-5 21:53 | 只看该作者
单片机常用一些,树莓派应用比较少。  

使用特权

评论回复
15
bestwell| | 2022-3-5 22:06 | 只看该作者
这个还是玩单片机的好。  

使用特权

评论回复
16
htmlme| | 2022-3-5 22:22 | 只看该作者
单片机开发吧  

使用特权

评论回复
17
primojones| | 2022-3-5 23:02 | 只看该作者
入门都是单片机。  

使用特权

评论回复
18
mikewalpole| | 2022-3-5 23:38 | 只看该作者
树莓派开发起来比较难吧   

使用特权

评论回复
19
suncat0504|  楼主 | 2022-3-6 10:20 | 只看该作者
mikewalpole 发表于 2022-3-5 23:38
树莓派开发起来比较难吧

是啊。需要了解linux系统知识。因为一般要通过IO和外部设备交换数据,所以还得学习设备驱动程序开发。

使用特权

评论回复
20
guijial511| | 2022-3-6 10:50 | 只看该作者
你这是想玩软件吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:大连伊飞特信息技术有限公司软件工程师
简介:本人于1993年毕业于大连理工大学。毕业后从事单片机开发工作5年,之后转入软件开发工作至今。

119

主题

3675

帖子

5

粉丝