打印

单片机神功(转)

[复制链接]
6767|49
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Cortex-M0|  楼主 | 2011-11-4 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天仔细想了一下,对于单片机程序设计,个人认为可以简单分为以下十层。

第一层 :   我来了

第二层 真的打呀

第三层 并肩作战,时间,说爱你不容易

第四层 状态,你在哪里

第五层 时间,还是时间

第六层 丰富你的视界

第七层 我们说好的

第八层 别争了,让我来分配吧

第九层 穿着操作系统去裸奔

第十层 无招胜有招

    第一层,我来了。处在这一层的典型是可以用C语言写简单的逻辑控制,如闪烁LED,简单数码管显示,简单外围模块驱动实验。一般对单片机感兴趣,经常动手实践的人,半年左右,可以练到此地步(针对没有接触过单片机的人而言)。此层最典型的示例就是,扫描按键时候,检测按下------延时20ms --再次检测按下----返回键值或等待释放。如果你是这样做的,或者正在这样做,毫无悬念,应该处于这个级别。对于95%的电类专业学生来说,毕业时候,远远低于这个级别,剩下的5%则依次分布在各层上。这也是为什么学单片机的人成千上万,而会用的人寥寥无几的原因。

    第二层 真的打呀。步入这一层的典型标志就是开始思考自己所写的程序是否能够有一点实用价值。譬如应用在实际工程项目中。在这一层,应该开始思考如何让程序结构简单模块化,如何合理的利用CPU的时间。我曾经写过这一层的一点简单教程。对付这一层应该是绰绰有余了。

第三层 并肩作战,时间,说爱你不容易。 这一层是建立在第二层的基础上面。从第二层跨越到这一层,需要很多代码行的积累。在这一层,你对系统中的各个模块应该能够很好的区分。同时对于时间的应用安排更加合理。在这一层,同时也应该考虑时间驱动的设计模式。如何让CPU更有效率的利用起来,需要长时间的积累,并非看,想就可以弄明白,而是不断的实践。

第四层 状态,你在哪里。这一层同样建立在第三层基础之上。掌握了以上三层,只要基本不涉及复杂算法的程序,可以组织小规模的程序的编写了。在这个时候,如何有效区分系统中的状态,利用状态来进行迁移,变得尤为重要。有人说通用结构好。反而我认为,针对特定应用来规划更优秀。对于单片机程序而言,几乎没有能够一摸一样的项目。而对于可移植性而言,能够做到函数级别的复用,已经非常难能可贵了。

第五层 时间,还是时间。时间具备精确性、模糊性、可丢失性,这三个特性是从应用时间的不同角度来描述的。精确性应用在精确地定时、计时的场合,它是个强实时的概念,比如测量频率。模糊性应用在需要稳定计时的场合,它追求的是长时间的稳定性,而忽略定时每刻发生的时刻,比如显示日期时间。可丢失性是非重要的计时,它只要求阶段性时间符合而不要求一定时间到达就必定发生,比如LED闪烁的时间控制、倒计时执行某些功能性操作,通常是使用时间系统的时间发生标志。同时在这一层如果能够将WINDOWS程序设计中的一些优秀思想利用起来,则非常好。能够领悟到这一层的,在我所知道的前辈高手中少之又少。

第六层 丰富你的视界。这一层是我自己安排的位置。相比前面几层而言,我觉得它更为重要。写单片机程序,什么最痛苦,当然是做界面最痛苦。一个好的产品,离不开好的UI。在这里,你需要设计简单易用同时好看的人机接口非常不容易。而且对于简单单色点阵液晶的操作,能够做到显示界面非常好看,同时程序结构清晰,非常不容易。很多人都说,设计界面,就像绣花似的。太痛苦了。我一直在折腾,现在还没有一个定论,到底是通用的结构好,还是针对特定用途还设计好。按照我在第四层中的说法,这里应该根据特定用途来规划更好些。

第七层 我们说好的。这一层主要是各种各样的协议的熟悉。非常重要,因为这个是和实际联系最为紧密的。工业现场的各种传感器,采集仪表如何将采集到的数据有效的发回给上位机。两者能够可靠的通信,软件层面上都离不开它们。

第八层 别争了,让我来分配吧。还在为该如何分配CPU的时间嘛。其实不用苦恼。千万不要什么东西都重新自己造。你想开车,不用自己造轮子吧,买一个就可以了。前人其实对这些问题都研究过非常多了。因此操作系统应运而生。有人说,如果学会了在操作系统上面写程序,将绝不想再回到以前的那种编程方式,听起来非常诱人。

第九层 穿着操作系统去裸奔。啥,都用上操作系统了,还想着裸奔。太花心了吧。非也。这里是将前面几层所提及到的一些思想与第八层融汇贯通。可以说,在这一层,需要对前面的每一层都非常的熟悉。并经过很多实际项目的磨练方能有所体会。

第十层 无招胜有招。能够达到这一层的应该算的上是屈指可数的高手之一了。在这一层上,除了前面九层的熟练应用之外。更牛的人应该是可以设计操作系统,设计gui之类的。要达到这一点,需要非常多的基础知识,以及大量的专业知识以及实践,再加以10---20年的实战经验,以及一颗不沉寂的心。在这里,无招胜有招,非常熟悉MCU的特性,能够利用这种各样的技巧。这样的高人,在国内数一数二的电子论坛里也不在少数。

    单片机的本质只是一个工具。因此,更为重要的是模拟电子,数字电子以及其它基础的专业课程。很多人都说大学学的东西没有用,其实这个才是最大的谬论。万丈高楼平地起,没有这些专业基础课程的支撑。以后工作中进步非常缓慢。道理很简单。学的东西都是建立在以前的基础课程上面的。如果一个连三极管的放大电路都不会分析的人,我不相信他可以设计出优秀的电路来。因此作为一个合格的电子工程师,除了掌握广泛的专业知识技能外,时刻不能够停止学习的脚步。

http://hi.baidu.com/52elec/blog/item/9ac4fda972f1e1f01f17a202.html
评分
参与人数 4威望 +9 收起 理由
cubasa + 1
McuPlayer + 6 支持
highgear + 1
sun520up + 1

相关帖子

沙发
xyz549040622| | 2011-11-4 15:40 | 只看该作者
仔细想想挺有道理,在第一层向第二层迈进!

使用特权

评论回复
板凳
yewuyi| | 2011-11-4 16:22 | 只看该作者
看来俺是永远过不了8、9、10啦。:L

使用特权

评论回复
地板
hotpower| | 2011-11-4 18:30 | 只看该作者
哈哈,俺只能做到最后三点。其它不行。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
DownCloud + 1
5
DownCloud| | 2011-11-5 13:11 | 只看该作者
本帖最后由 DownCloud 于 2011-11-5 13:22 编辑

我程序入门很奇怪,第一次编程就是时间驱动。。用一个定时器,程序中一般没有delay,就算有也不会长,老师比较有个性吧。所以先初步进入第三层再去熟悉了第一二层。
我程序一般有分层,底层程序非常关键,基本要求是低耦合,中高层的就好编了。兵马未到,粮草先行。各个层次的任务各自做各自事情,没空管其他人,就像邮局,你寄信就把信写好扔到信箱,然后走人,自有邮递员帮你送过去。哪还有寄信自己跑到对方面前,递给他然后再回来啊。
目前应该在第四、、

使用特权

评论回复
6
plc_avr| | 2011-11-5 15:23 | 只看该作者
菜鸟在失败中成长.....后3关,估计还要N年。

使用特权

评论回复
7
mcu_electron| | 2011-11-5 15:35 | 只看该作者
我来爬楼来了,后面几层有点高但又没有楼梯,最后一层看起来更像是无穷高 @...

使用特权

评论回复
8
chencheng| | 2011-11-5 16:08 | 只看该作者
有点意思。

使用特权

评论回复
9
Cortex-M0|  楼主 | 2011-11-5 17:24 | 只看该作者
看来俺是永远过不了8、9、10啦。:L
yewuyi 发表于 2011-11-4 16:22

哈哈,俺只能做到最后三点。其它不行。
hotpower 发表于 2011-11-4 18:30


LS两位合二为一,就天下无贼了,哈哈~~~ :lol

使用特权

评论回复
10
dong_abc| | 2011-11-5 17:49 | 只看该作者
找点功练一下。

使用特权

评论回复
11
zoomone| | 2011-11-5 18:10 | 只看该作者
深有体会,大部分时候编一段程序根本不知道消耗了单片机多大的资源,需要多长时间才能周期运行一次。

使用特权

评论回复
12
李富贵| | 2011-11-5 22:02 | 只看该作者
我现在带白板徒弟直接从第6层做起,上RTOS根本不用考虑什么时间。
Cortex-M的价格做得如此便宜,RAM足够充分(相对于51以及其他所有8位单片机),如果你不是消费类电子量大拼价格的话,用FreeRTOS之类的Scheduler(FreeRTOS太谦虚了)可以最大程度的简化软件的各种顾虑和风险。

使用特权

评论回复
13
rclong| | 2011-11-5 23:18 | 只看该作者
有没有系统一些的资料可以帮助人一层一层修炼呢?
现在发布得多的 都是第一层的 因为发布这样的教程门槛不高
再往上一层或者两层的资料很少见

使用特权

评论回复
14
天南星雨| | 2011-11-6 08:16 | 只看该作者
有点意思,不错。。。

使用特权

评论回复
15
highgear| | 2011-11-6 09:37 | 只看该作者
我笑而不语

使用特权

评论回复
16
李富贵| | 2011-11-6 10:04 | 只看该作者
人家嵌入式都从单片机学起。这可好,竟然教徒弟从人机界面入门,白板徒弟应该连c语言都不会吧。这是在侮辱别人的智商吗?弄个Cortex-M和FreeRTOS也拿出来显摆。这是代表你最高水平吗?估计你那白板徒弟学会了人机界 ...
niubility 发表于 2011-11-6 09:26

好家伙,这是你第一个帖子,有脸拿大号上来。专门搞个马甲,看来你也知道你是卑鄙小人了。

使用特权

评论回复
17
niubility| | 2011-11-6 10:27 | 只看该作者
哥哥平时都是潜水不发言的,今天专门为你注册个号,是不是很感激哥啊。
哥平时最烦搞技术的人吹牛。怎么了,哥的话说的不客观吗,你从哪看出小人来了!

使用特权

评论回复
18
tuzihog| | 2011-11-6 11:10 | 只看该作者
楼歪了!
还是留名一下吧!
至少楼主的本意是好的~~~~~~~~~~~~~~

使用特权

评论回复
19
tuzhaichang| | 2011-11-6 13:19 | 只看该作者
niubility不就是赫赫臭名的刘谦倍吗?最喜欢小号的哪个。冷漠、1952都是一个人。说话口气一模一样。

使用特权

评论回复
20
highgear| | 2011-11-6 23:52 | 只看该作者
这本是一个好贴,可惜楼歪了。

使用特权

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

本版积分规则

个人签名:学习chunyang和maychang两位老师,努力练好基本功。 学习HOT大叔,学好“Cortex-M0”,做“Cortex-M0”之菜鸟。

7

主题

4820

帖子

12

粉丝