12587|42

4996

帖子

19

TA的资源

裸片初长成(初级)

楼主
 

新的时代,谈谈你对单片机学习的看法! [复制链接]

 
       随着电子技术与单片机技术的发展,单片机的运行速度和存储器容量获得了很大的进步。但我国的单片机教育基本还停留在几十年前的51时代,基本的学习总是也汇编开始,内核入手。把很多初学者搞得云里雾里,在实际的应用中却不知道怎么去编写程序。特别是没有学过C51的人感觉更是迷茫。

       在这个新的时代,单片机已经不再是单纯的单片机了,看看单片机高级工程师招聘信息,我们不难发现,很多要求的针对系统的,特别是Linux系统的。这一点是否已经体现了,单片机不在单纯是搞内核,学汇编的时代了。他要求我们还必须了解程序架构,学习多任务思想。

       当然芯片厂商已不落后,很多厂商在退出芯片的同时,已经提供了底层固件库。为此很多人有开始发言了,说学习单片机就一定要用寄存器,当然有的人也会支持固件库。那么您怎么看这个问题?

       不得不说,有了固件库,至少有以下好处:

      1. 入门速度快,我们基本不用了解内核,不用了解这个单片机与其他单片机的不同;
      2. 快速开发产品,不用了解基础,我们可以直接从C入手,直接编写应用程序;
      3. 移植方面,不需要了解底层,直接移植应用,更换底层接口。

当然,永远不止这些好处。这里就列举这几项。

下面谈谈您的看法吧! 跟帖回复优质内容将赠送图书一本


此帖出自stm32/stm8论坛

最新回复

  详情 回复 发表于 2015-3-23 17:22
点赞 关注
个人签名我的博客
 

回复
举报

5979

帖子

8

TA的资源

版主

推荐
 
以我的看法,还是要从项目的本身去做选择,无论是使用什么样的单片机,或是否使用固件库等都会受到以下因素的制约。
1、成本,这个是很难规避的话题,成本不限制,那可选择的余地就大了
2、资源,与成本对应的就是资源,资源有限的情况下,用不用固件库就需要商榷了
3、开发周期,开发周期短的一般都会选择自身熟悉的芯片,这样避免风险,用固件库也可以加速开发
4、采购周期,芯片再好,需要的时候买不到也是个麻烦的事情。

应该还有其它的制约因素,大家各抒己见
此帖出自stm32/stm8论坛
 
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

推荐
 
  1. 基本的学习总是也汇编开始,内核入手。把很多初学者搞得云里雾里,在实际的应用中却不知道怎么去编写程序。特别是没有学过C51的人感觉更是迷茫。
复制代码


这个毛病,早在我还在学51的时候就发现了,所以虽然学51时,我基本上把课本里提到的所有基本和硬件相关的,什么存储器大小,逻辑分区物理分区,乃至111条指令,常见的寄存器,我估计我当时就算没全背下来,大概也熟悉的不行。
——这是我第一次用 背 的办法 学这些东西,也成了绝响。

因为事实上真的一点用都没有。


  1. 很多要求的针对系统的,特别是Linux系统的。这一点是否已经体现了,单片机不在单纯是搞内核,学汇编的时代了。他要求我们还必须了解程序架构,学习多任务思想。
复制代码

额,系统这个东东,尤其是linux这种复杂的系统,偶说说。
偶的观点,这视乎你要干什么?
如果你要做一个类似于什么 小山寨平板,或者智能手表什么的,那你就上吧。
如果你只是要做一个简单的 简单功能闹钟,那还是别闹了,系统没必要,裸机也行。
做什么事用什么手段,杀鸡用牛刀,不好,真的不好。
虽说这年头高端高性能器件很多,但除了考虑成本,还有很多性能方面的东西要考虑,你做个小闹钟当然没什么,但如果涉及 实时性啊什么的,那还是不能这么任性。

底层固件库


对于楼主提到的三个主要优点,偶完全同意。

并且~~

说到固件库,其实我是一个 举双手加举双脚 赞成的人。
从51到stm32,我最大的转变就是 底层库 开发。
虽然,额,是的,我经常各种喷st库,还有一些 不成库,但是也是各种糅合底层寄存器的 其他厂商的 库。
但是本质上,我是非常支持 以库为基础来开发的。

原因无他:
因为操作寄存器并非我的本意,我的本意是用它来开发东西。而且,单片机越来越复杂,寄存器越来越多,要死啊~~
51我还能勉强背下来,你让我去背stm32?我死给你看信不信。

这里,偶要强调一下的就是:
虽然偶支持固件库的方式开发,但是偶在这方面并不走极端,那就是,我觉得,在必要的情况下,还是要补充一定的寄存器辅助。

当然,这是因为我觉得某些库做得不够好,这个,我可能会根据自己的需求重新实现。

但是,不管如何,我是严重支持这种方式开发的,否则不得累死人。
此帖出自stm32/stm8论坛

赞赏

1

查看全部赞赏

 
个人签名

强者为尊,弱者,死无葬身之地

 

回复

2057

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
单片机的种类这么丰富其实对我而言就是需要编写更加容易移植的代码,有了这些代码以后需要换芯片也会比较容易。底层的东西不是很有必要的话我是不会花时间在这方面的。
此帖出自stm32/stm8论坛
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

5
 
      1. 入门速度快,我们基本不用了解内核,不用了解这个单片机与其他单片机的不同;
      2. 快速开发产品,不用了解基础,我们可以直接从C入手,直接编写应用程序;
      3. 移植方面,不需要了解底层,直接移植应用,更换底层接口。

对有很多经验的人来说这是优点,库也有坑。对学习,或者行业经验不那么丰富的人来说,这个不能算优点。

这个和编译器有点像。要是很有经验的人,熟悉编译器那一套东西包括makefile等等,他用IDE来说是如虎添翼;而学习者或者不熟悉这些东西的人,那么脱离了IDE就没法搞事了。
没有经过学习阶段、没有经过底层的磨练阶段,那么对个人来说不是好事情,当然,从公司角度来说节约成本,加快开发速度等等是有价值的。
此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

6
 
抛开学习不说的话,目前比较好的使用形式是arduino这种,库都直接面向应用。所以这个东西火了。
此帖出自stm32/stm8论坛
 
 
 

回复

954

帖子

0

TA的资源

纯净的硅(初级)

7
 
首先,完全同意楼主关于使用库的优点的观点。熟悉了库几乎可以无缝的跨硬件平台啊,比如从这个单片机换到那个单片机。
另外一个,如今的单片机性能越来越高,一般来说对程序影响不会很大,除非是那种对性能要求特别高的,比如在对图像进行处理的时候,(pc上)1080p的图片 彩色转 灰色,正常写也就12帧左右,如果使用汇编并使用sse指令,就可以达到500帧,而这就需要了解底层寄存器。

至于是否需要使用操作系统,操作系统是给人方便的,最重要的一点便是提供多任务的功能,事实上,如果能用裸机写的程序比用操作系统还要好,那么久集中可能,1 这个程序本身不需要用多任务,2.硬件平台不适合操作系统,3 高手写的裸机代码与他人写的系统应用程序。

在一般上来说,现在在实际应用中,程序一般会比较复杂,(并不是说所有)用操作系统会大大的加速开发周周期以及减少维护成本

总的来说库是个好东西啊
此帖出自stm32/stm8论坛
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

8
 
单片机是个好东西啊,只是在中式教育下,甜美的东西都变味了。   
关于库使用固件库。除了楼主说的,和操作寄存器相比,可读性强,易于维护。
但操作寄存器也有它的优势。可以更深入的了解芯片的底层结构。增强对芯片整体结构的把握,理解。便于进一步学习,扩展。另外,操作寄存器的效率明显比调用固件库高。这在实时性要求较高,Cpu主频有限的情况下,很有体现。
此帖出自stm32/stm8论坛
 
 
 

回复

300

帖子

0

TA的资源

一粒金砂(高级)

9
 
chenzhufly 发表于 2015-3-6 14:37
以我的看法,还是要从项目的本身去做选择,无论是使用什么样的单片机,或是否使用固件库等都会受到以下因素的制约。
1、成本,这个是很难规避的话题,成本不限制,那可选择的余地就大了
2、资源,与成本对应的就是资源,资源有限的情况下,用不用固件库就需要商榷了
3、开发周期,开发周期短的一般都会选择自身熟悉的芯片,这样避免风险,用固件库也可以加速开发
4、采购周期,芯片再好,需要的时候买不到也是个麻烦的事情。

应该还有其它的制约因素,大家各抒己见

我很赞同您的观点!除了在某些情况下要求性能,使用汇编会简单粗暴,其他的感觉才是c比较容易开发。不管什么单片机感觉都是差不多的,往相应的寄存器写相应的数据,这个就要看datasheet里面如何去说明,不过现在的单片机寄存器真多啊!!!


此帖出自stm32/stm8论坛
 
个人签名世间万物皆系于一键之上~
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

10
 
学习分系统性学习和应用性学习。系统性的当然了解架构、内核是必须的,但应用性学习确实没有必要,很多时候受到时间和环境的限制,你没有这么多好的条件去全面的学习,说不定有的时候这个项目用了就不在用这里芯片了,系统性的学习就得不偿失。
此帖出自stm32/stm8论坛
 
个人签名我的博客
 
 

回复

337

帖子

0

TA的资源

纯净的硅(初级)

11
 
还是以前LM3S系列的驱动库做的好,各种中文的开发文档也多,基本上看看那些资料就能够开发使用。
此帖出自stm32/stm8论坛
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

12
 
其实单片机发展到今天,已经跟传统的计算机类似了。因为整个系统的扩张,使得软件和硬件其实可以分开做。做软件的可以基本不懂硬件(一般略懂即可),做硬件的也可以不考虑太多高级的应用,但是对驱动的编写还是必须的。就好比电脑的主板和BIOS,操作系统和应用。这些都可以分开了,手机就是一个典型的例子。

反过来看学51,有没有用我不好说,反正公认的一个试试就是学的东西工作中几乎用不到。即便在工作中用到了51,也不用那111条汇编指令。但是我个人经验而言,认为学习51对我以后还是有帮助的,对CPU的构架了解有一个由浅入深的认识。在论坛中也遇到过有一些熟手提了一些问题,如果了解51的架构和汇编指令应该很简单的就解决了。但是由于现在技术的发展,很多这些技术在实际应用中都已经用不到了,比如以前需要通过优化代码满足苛刻的内存,而现在只需要换一个型号的片子就行,价格也相差不大。学习汇编对了解单片机的工作流程有很大帮助,方便理解一条C语言转换成汇编后是如何执行的。
再一个就是单片机(广义的单片机,包括ARM,DSP等)包含的东西太多了,如果不能真正的理解单片机的架构,从51过渡到其他架构的时候基本上用不到以前的知识。但是从我的工作经验和与别人的交流中发现,一般的高手对这几类架构了解都了解的不错,应该是有融会贯通的。
总的来说我觉得学习51还是有必要的,但是现有的教育模式有问题,一个是不能利用,另一个是不能融合。我曾遇到一个大学生,学电子专业的,老跟我说嵌入式,单片机,我就问他什么是嵌入式,什么是单片机。他说单片机就是51,嵌入式就是811(LMS811),因为学校就这么讲的。关于嵌入式和单片机的区别和联系在这里我不多说了,想说的就是学校对学生的教育过程中没有起到应有的引导作用。
再说一个固件库,就我个人来说还是不太喜欢用的。首先是效率问题,修改一个寄存器有时候需要调用多个函数,而且每个函数里面又有很多重复和判断的东西。对于一个确定的寄存器值,这样的效率显然是太低了。再一个就是语言问题了,看英文的吧,有时候能看意义,但是不确定意义,还得翻具体的寄存器每一位代表的意义。既然都看到寄存器中的定义了,我干嘛要调用函数,直接给寄存器赋值就行了。当然现在很多厂商也提供中文的资料,但是感觉看中文的还不如看英文的呢,相信大家也有同感,直白的单词翻译看的让人生气。
当然固件库也是有他的优点的,主要就是意义明确,每一个函数都有一个有意义的名字,让人一看就知道是干什么用的。而且这样写的代码给别人看也比较容易理解,毕竟看单词比看数字要好理解一些。
此帖出自stm32/stm8论坛
 
 
 

回复

35

帖子

0

TA的资源

一粒金砂(中级)

13
 
单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
此帖出自stm32/stm8论坛
 
个人签名监控工程
 
 

回复

109

帖子

0

TA的资源

一粒金砂(中级)

14
 
个人认为,还是先学51,再学STM32。
在不了解CPU的情况下搞底层编程,也是没法写出高效的代码,还有,如果出问题,很难解决。
此帖出自stm32/stm8论坛
 
 
 

回复

3416

帖子

0

TA的资源

纯净的硅(高级)

15
 
辛昕 发表于 2015-3-6 14:23
这个毛病,早在我还在学51的时候就发现了,所以虽然学51时,我基本上把课本里提到的所有基本和硬件相关的,什么存储器大小,逻辑分区物理分区,乃至111条指令,常见的寄存器,我估计我当时就算没全背下来,大概也熟悉的不行。
——这是我第一次用 背 的办法 学这些东西,也成了绝响。

因为事实上真的一点用都没有。


额,系统这个东东,尤其是linux这种复杂的系统,偶说说。
偶的观点,这视乎你要干什么?
如果你要做一个类似于什么 小山寨平板,或者智能手表什么的,那你就上吧。
如果你只是要做一个简单的 简单功能闹钟,那还是别闹了,系统没必要,裸机也行。
做什么事用什么手段,杀鸡用牛刀,不好,真的不好。
虽说这年头高端高性能器件很多,但除了考虑成本,还有很多性能方面的东西要考虑,你做个小闹钟当然没什么,但如果涉及 实时性啊什么的,那还是不能这么任性。



对于楼主提到的三个主要优点,偶完全同意。

并且~~

说到固件库,其实我是一个 举双手加举双脚 赞成的人。
从51到stm32,我最大的转变就是 底层库 开发。
虽然,额,是的,我经常各种喷st库,还有一些 不成库,但是也是各种糅合底层寄存器的 其他厂商的 库。
但是本质上,我是非常支持 以库为基础来开发的。

原因无他:
因为操作寄存器并非我的本意,我的本意是用它来开发东西。而且,单片机越来越复杂,寄存器越来越多,要死啊~~
51我还能勉强背下来,你让我去背stm32?我死给你看信不信。

这里,偶要强调一下的就是:
虽然偶支持固件库的方式开发,但是偶在这方面并不走极端,那就是,我觉得,在必要的情况下,还是要补充一定的寄存器辅助。

当然,这是因为我觉得某些库做得不够好,这个,我可能会根据自己的需求重新实现。

但是,不管如何,我是严重支持这种方式开发的,否则不得累死人。



  赞同沙发的观点
去玩寄存器,需要记忆的东西太多,控制器更换选型、升级或者新的内核技术出来了

这些苦逼的寄存器相当一部分又要推倒重来了,攻城狮们估计要疯掉。。。。,原型出来被拖后,项目进度被拖后,项目经理被打屁股,客户经理被打屁股

这是连锁反应啊

估计各大厂家推出的库,也是基于这种考虑吧

不过某些比较特殊的情况,直接寄存器操作甚至是直接汇编,也是有必要的。



至于单片机学习,会用是基础,用出花来(好的创意),才是硬件攻城狮们需要多考虑的事情

毕竟,固件库已经帮攻城狮们完成了很多重复的工作

很容易可以做到触类旁通

连接就是创新。
此帖出自stm32/stm8论坛
 
个人签名

So TM what......?

 

 

回复

1204

帖子

1

TA的资源

纯净的硅(初级)

16
 
顶一下吧,至今不太懂固件库
此帖出自stm32/stm8论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

17
 
想真正学好单片机必须从汇编学起,你用51和用arm点亮一个灯没有区别的,用arm并不代表你水平高,单片机最重要的是要玩转定时器和中断,否则就算做了一辈子的项目也没真正入门,不服我给你出题!
此帖出自stm32/stm8论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

18
 
sbk100 发表于 2015-3-9 10:48
想真正学好单片机必须从汇编学起,你用51和用arm点亮一个灯没有区别的,用arm并不代表你水平高,单片机最重要的是要玩转定时器和中断,否则就算做了一辈子的项目也没真正入门,不服我给你出题!
呵呵,一个典型的代码人物出现。



此帖出自stm32/stm8论坛
 
个人签名我的博客
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

19
 
题控,呵呵
此帖出自stm32/stm8论坛
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

20
 
出嘛,热闹热闹,会答的就答,不会的鼓掌.华山不论剑,怎么排名词呢,是吧
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表