爱捣鼓

【嵌入式】爱捣鼓STM32笔记1学习策略

0
阅读(2481)
0 主要内容
(1)谈谈模拟学;
(2)选选学习资料;
(3)搭建学习环境;
(4)聊聊学习STM32的策略。
1 谈谈模拟学1.1 模拟学的由来
我总爱捣鼓一些奇怪的想法,在网上搜索模拟学的定义,发现竟然搜索不到。从互联网上的搜索结果可知:模拟学还不是一门学科,也没有人专门研究模拟学。我虽不才,但是,在经常胡思乱想之后,决定提出确定模拟学为一门学科的观点。可能我不是第一个提出模拟学是一门学科的人。但是,我会尽力研究这门学问。因为,我感觉到,其不仅可以探寻到世界上所有事物传承、变化和质变的本质规律,也可作为所有科学研究的基础。
模拟学无处不在,从大的方向来说,世界上的所有事物都是模拟学研究的对象。从人自身来说,无论从人类社会的历史、个人成长还是社会交往等等,都是模拟学研究的内容。想想人为什么都是直立行走?为什么人包含相同的组成部分?为什么狗不会生下猫?为什么燕子不再水里游泳,而是在天上飞翔?为什么鱼儿不在路上跑?为什么月季花不是牡丹花?为什么梨树不会变成苹果树?等等,都是模拟学需要研究和解决的问题。
什么是模拟学?我找不到现成的答案,经过长时间的思索后,根据我自身所掌握的信息,自己暂定了模拟学的定义:模拟学是一门研究事物模仿、拟造和创造本质的一门学科。模仿、拟造和创造是构成模拟学的三个基本元素,同时,也是模拟学的三个基本层次。
我们以大家熟悉的比葫芦画瓢的故事为例来说明这三个基本元素的概念和关系。模仿是看葫芦画一个类似的葫芦;拟造是比葫芦画一个瓢;创造是看到葫芦,把瓢切开,用瓢去舀水或盛饭。
如果我们细心观察周围的环境,您会发现,树木、花草、建筑物、汽车和各类图书都有相似的地方,也有拟造的地方,也会发现其不同的创新点。甚至我们的思维模式、做事方法、解题方法和说话腔调都包含模拟学的三个层次。
1.2 学习的本质
人类学习的本质就是模拟学中模仿和拟造两个元素所研究的内容。学习的第一个层次是模仿,即收集和整理学习资料的层次。在该层次中,“模”即收集和复制原始学习素材的过程,也是进行学习的第一个阶段。“仿”就是按照收集和复制的原始学习素材进行模仿和整理,了解原始素材的所有信息及整理获得的信息,也是学习的第二个阶段。第三阶段是拟造的阶段,在这个阶段,我们把自己现已掌握的信息和整理的目标原始素材信息进行融合,产生自己所能掌握的知识或技能。
1.3 嵌入式学习法
通过对自己、朋友和同学以往学习过程和学习内容的观察,会发现一个现象,我们学习的内容都是前人的研究成果、经验、结论或技巧。其实,这个学习过程,也是强迫自己按照前人留下的知识,模仿其思维模式和接受其学说的过程。整体来看,我们一直在模仿某人。其实,把学习的第一个阶段定义为模仿,大家也许从心理上无法接受。因为,我们都想与众不同,我们都想塑造自己的特色。可是,这是事实。我们也没有必要为这个较真,其实,模仿没有错,模仿也不是什么不光彩的事,这只是我们的人生中一直相伴的一个实实在在的规律而已。
在嵌入式学习过程中,你会发现自己刚开始一直在模仿。比如,我们买一块开发板,首先希望这块开发板带的资料全和详细,其次,最好能有配套视频。这是我们的期望。为什么我们会不由自主的产生这种期望呢?很简单,因为,我们刚接触嵌入式开发,我们不知道该从哪里入手,甚至连怎样下载程序都不知道。我们希望能有现成的模板,让我们能比葫芦画葫芦,让我们在开始模仿的过程中,不断的模仿,不断的修正和整理自己模仿的方法、编程规则和编程思想等等,我们在进行大量模仿之后,接下来会产生叛逆的想法,这是正常现象,我们都希望自己与众不同。在总结已有模仿经验的基础上,我们形成了自己的认识,而这些认识虽然其顺序和组合方式不同,但是,其依旧是带有大量的模仿痕迹。这个阶段我们暂时称为拟造阶段。对应创造阶段,比如,我们用自己掌握的嵌入式开发方面的知识,设计一个独立的应用系统,这就是一种创造。虽然,也包含以前模仿的痕迹,但是,毕竟你做出的东西,不再是一块开发板,而是一个满足特定应用的嵌入式系统。
由此,我们可以总结一下嵌入式学习的三个阶段:
第一阶段:模仿阶段---收集资料,大量模仿,不断重复的模仿;
第二阶段:拟造阶段---总结和整理模仿的资料,形成自己的嵌入式开发技能;
第三阶段:创造阶段---利用已经掌握的嵌入式开发技术,根据特定应用,设计一套新的嵌入式系统。
2 选选学习资料
关于STM32的学习资料,在互联网和书架上,亦是专家云集、漫天飞舞、群雄逐鹿。对于刚刚接触STM32芯片,想进行嵌入式系统开发的人来说,可能会有以下三种感觉:
第一种感觉:选STM32学习嵌入式系统开发,没有站错队;
第二种感觉:资料好好丰富,网上好好热闹,学习资料和疑问不用愁不好解决了;
第三种感觉:百花云集,左搂右抱,东奔西走,心乱如麻,迷失花丛。
不管你信不信,反正刚接触STM32时,我有这种感觉。我们有前两种感觉是很正常的,这是学习STM32进行嵌入式系统开发的优势。在互联网或书店疯狂欣赏和搜罗一番,面对眼前百花云集的美味学习素材,左搂搂右抱抱,东奔奔西走走,好似一凡繁忙景象,可是,兴奋过后,才发现拣了芝麻丢了西瓜,始终不得要领,于是,心乱如麻,迷失在百花丛中。
经过以上折腾STM32的岁月后,回眸一瞅,才发现伊人竟在灯火阑珊处。我个人觉得,学习STM32进行嵌入式系统开发和学习其他知识一样,都有一个共性,原始学习素材,不在多,而在贵以精。
经过层层筛选后,我认为学习STM32的精品素材参考以下两份资料足矣。
(1)STM32开发指南-库函数版本 V1.2 .pdf
(2)零死角玩转stm32-初级篇/中级篇/高级篇/系统篇.pdf
以上两份资料是互联网上免费的原始素材。学习成本极低,而且,其内容各有千秋,互有伯仲。我个人倾向于重点按照“零死角玩转STM32”这份资料来学习STM32,因为,知识来至于劳动人民的实践,从实践中来,到实践中去。其符合我一向追求的“实例驱动法”的学习方法。根据设计实例的知识需求,不断的学习新知识点,获得的印象和理解的深刻性都比较好。不过,在以“零死角玩转STM32”为主菜的基调下,“STM32开发指南-库函数版本”这份辅菜也是必不可少的。在品尝主菜时,品味一下辅菜,会有另类的美好,防止口味惯性,最终导致乏味。
以上是以ST官方库函数为主进行嵌入式系统开发的主菜。如果咱哥们比较牛叉,想抛开Cortex-M3库函数的开发方式,直接操作寄存器进行嵌入式系统开发,建议以“STM32开发指南 V1.2.pdf”为主菜。下面的辅菜仅供参考。
不过,我个人建议直接操作寄存器的开发方式,还是闲来无事,自己琢磨的好。看似代码精简了,可是,有多少人能保证自己写代码比ST官方提供的库函数的质量好?即便如此,又有多少人能做到其代码的移植性?我个人认为,学习STM32做嵌入式系统开发,尤其是对初学者,使用库函数方式,不仅仅是偷懒,不想直接操作寄存器,而是学习其分层设计的思想、代码组织的方式和深入掌握C语言的编程精髓等内容。ST官方固件库本身就是一个学习STM32嵌入式系统开发和C语言编程比较好的实例。
除了以上两份资料,另外介绍三份资料仅供翻阅查找相关知识点使用。以下三份素材仅供设计实例过程中随遇随查即可。喜欢打破砂锅问到底的朋友,可以再使用固件库的同事,翻阅这些资料了解库函数操作寄存器的的方式和技巧。
(1)ST官方固件库
(2)Cortex-M3权威指南(中文).pdf
(3)STM32中文参考手册_V10.pdf
最后,对应芯片的数据手册有空翻阅了解一把即可。
3 搭建学习环境
学习STM32,必须搞到一块STM32开发板,实践是验证自己学习成果的最好试炼场。对于使用Proteus等仿真软件进行学习的方法,我个人没玩过。软件仿真学习嵌入式系统开发,确实节约成本,不过,对我而言,总感觉缺乏真实感。因此,我建议大家随便买一块STM32开发板,构建自己学习STM32的试炼基地。
开发板必备的下载和仿真工具,也是必须的。学习STM32需要准备的开发工具主要是JLink仿真工具和USB转串口(UART)下载工具。现在的STM32开发板上一般都自带USB转串口(UART)下载工具。如果经济比较紧张的朋友,直接把写好的代码下载进开发板中运行即可。但是,这样就不能学会使用JLink仿真和调试代码的方法了。因此,我个人认为,这两个工具必不可少。
学习STM32的编译环境,目前有很多种,我个人接触比较多的包括以下三种:
(1)Keil MDK-ARM
(2)IAR EVARM
(3)CooCox CoIDE
这三种编译环境中,Keil MDK-ARM和Keil C51未同一个编译环境,对于属性Keil C51的工程师来说,确实非常容易上手。其也是ARM公司自己的编译环境,一般认为其是与ARM芯片匹配最好的编译器。
IAR推出的EVARM也是不错的编译,ST官方固件库也支持该编译器。我个人认为在IAR EVARM最大的亮点是具备MISRAC 2004标准中规则的检查功能。对应工业控制、铁路应用和汽车电子及电力等涉及安全的嵌入式应用中,使用该软件的企业较多,最重要的是其支持的安全的C语言规则MISRAC 2004的检查机制。想提高自己编程水平的朋友,我个人建议使用IAR EVARM这个编译器。MISRAC 2004规则的限制,足可让你好好享受一下安全C语言的力量!
对于CooCox CoIDE相对其他两种编译器而言,其最大的优势是完全免费的,纯粹正版。其血统也是中国血统,只不过现在被某外国元器件分销企业收购了。无论如何,起码是国产的免费的编译器。有兴趣的朋友可以研究一下。最起码,不用常常找破解软件了。用起来,也心安理得。其下载网址为:http://www.coocox.org/CN/CooCox_CoIDE.html。
4 聊聊学习策略
行军打仗,遵循“千军未动粮草先行”的规则。咱们学习STM32,也必须有规矩,才能成方圆。凡事总有规律,做事总归讲究策略。学习STM32也不例外。我个人认为学习STM32采用以下三点策略即可。
(1)找一个C语言编程规范,了解公司使用的编程规则,从一开始,就尽量向这些规则靠拢。建议可以参考网上流传的华为C语言编程规范和范例及MISRAC 2004标准;
(2)重点按照“零死角玩转STM32”这份资料来学习STM32做嵌入式系统开发,其它资料仅供参考;
(3)疯狂模仿、拟造,积极实践和总结,毕竟实践出真知。

【笔记下载】