在线时间1 小时
UID420120
ST金币0
蝴蝶豆0
注册时间2013-3-9
新手上路
- 最后登录
- 2019-9-2
|
a0a.1 0b0c
前言:看到这个活动大家写的都是实际的东西和项目,没有人来写一下个人经验和见解,既然是大课堂,我就来说一下自己的拙见吧!希望能有些帮助。由于我们学校教单片机教的是stm8,所以我大二的时候就开始接触stm8了,也用来做了一两个项目,比较熟息,感觉自己也在逐渐的进步了,至于stm32,是最近才开始学的,谈不上熟息。这里不想谈实际的项目,而是想说一下感想和领悟。这些才是最宝贵的经验,因为只要是一个编程人员无论做什么项目这都有帮助。当然,因为自己学的时间不长,难免有失偏颇的地方,请各位海涵。
首先是编程规范
在学校里,做单片机课程设计或者是c语言方面的编程时候,我们都没有去注意这方面的问题,而大学的老师上课时也只要你的程序功能实现了就行了,没有哪个老师会跟你说编程规范的问题。这时候其实你的代码并未完成,只是没人告诉你罢了。如果哪天你开时做真正的项目时,你才发现问题多多。
1.没有规范化的代码会造成你对整体和逻辑的把握不足和混乱,在网上曾经看见 有人写几千行的代码最后逻辑混乱了才有了宝贵的领悟,我自己身边也有同学自己写了2千行的汇编代码,做的是一个电梯程序最后连他自己都不知道哪里出了问题,只能把代码废了。
2.没有规范化的代码会造成后期维护的困难。或许你会觉得写注释是在浪费时间,但是你要是写长一点的程序,你就会知道注释的作用了。几千行的代码,数十乃至上百甚至于数百个变量,你又能记得住多少,那么多的函数你记得住哪个呢?要用到某个函数你又从哪里以最快的速度找到他呢?如果你离职了,没有规范化的代码就很难维护了,或者说不如重新写一个速度更快。要改变这些状况这就有赖于规范化编程了。规范化编程使得你的编程模块化,相同功能的功能函数和变量放在同一个文件内,这样你便能快速而准确的找到你要的函数或变量。而有意义而讲究的命名能让你的代码见名知义,一目了然。最好看看大公司的规范(附件里有上海贝尔的规范,很好的,建议看看)。
其二是思想,也就是算法
代码的精华和灵魂便是算法,代码谁都能敲,关键是其中的思想。我们学单片机或者其他的编程也好,任何一个程序最有价值的部分在于它包含的思想,是思想算法让程序变得有生命。举个例子,你学红外,如果你只是简单的修改一下别人的程序那你只是见过这个程序而已,如果你了解了其思想,你只算了解而已,只有当你查看了红外解码和编码芯片的技术文档,了解了芯片和协议本身,并且根据文档写出来了程序才算真正的了解。当然这个过程很痛苦,很耗时间但是你会对红外有很深的了解,你也会学到各种红外编解码芯片,还有nec ,rc5等不同的红外编码方式。
其三是对单片机本身的熟息
对单片机的熟息对编程也有很大的影响,就拿stm32单片机来说吧。当做上面说的红外时,不熟的人会用定时器加中断来做,熟的人就会pwm捕捉的复位模式来做。还有不熟的人会犯下致命的错误,如stm8的adc要先读高位,否则结果是错的等。
其四是不同单片机的学习
要真正的从一款单片机到另外一款的学习,最好不要用库,老手熟落了再去用库。只用从寄存器开始,只有以尽量接近底层的方式去学才算真正学会一款单片机,以后做程序才能做到心中有底,调用库函数也很清楚它背后在干吗。一旦出错也能不慌不忙。
以上是个人对学stm8和stm32的一些自己的经验之见,不足之处,敬请见谅。 |
-
-
103.33 KB, 下载次数: 56, 下载积分: ST金币 -1
|