一个嵌入式工程师的Stm32开发日记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 勤于总结。人每天遇到的问题太多了,特别是学习者,然而人脑是有限的。所以我鼓励朋友们都 和我一样,能够时刻总结自己得到的。写在纸上也好,发到网上也好,刻在脑子里也好,你一定 要会归纳总结,才会有长足的进步,人家才赶不上你。
5. 坚持到底。最重要的一点放到最后说,只有四个字,简单得不能再简单,却不是每个人都做得到。 从我真正想做一件事开始,我放弃的部分大于我坚持的部分,所以失败的部分多余成功的部分。 每每放弃,我总会为自己找到各种理由。这些理由看似坚不可摧,实际上是你给自己摆的障碍而
2. 勤于实践。我一直认为书上的东西是死的,看得再多,它还是在书上;别人的东西是别人的,别 人对你讲得再多,也依然是在他的嘴上。要想把知识变为自己的,最行之有效的方法就是实践。 所以师弟问我问题时,我总是会说,让程序再板子上跑一遍即可。所以各位读者,当你遇到问题 时,一定记得去 Try 一次,实实在在的在开发板上做一次,一切对错即明晰。引用邓小平的一句 话:实践是检验真理的唯一标准。
开发板是没有一个让大家都满意的标准的,然而很多真正的嵌入式产品却有相似的标准,这就是我开 发酷学玩™的目的。TAOBAO 上卖的开发板,设计大多过于呆板,除了写些 Demo 程序尝尝新鲜感之外, 基本就没有其他用处了,完全没办法和真正的成熟嵌入式产品相提并论,而这样的板子,在使用者熟悉之 后也基本成了废弃物,丢入角落不闻不问。这些年我先后接触了多款产品,我试着把平时工作中遇到的成 熟产品理念带入到酷学玩™的设计中,所以我删去了很多累赘的接口,同时也试着把产品做小(当然不可 避免成本也在提高),加入锂电支持等等独特的设计,让酷学玩™即可以当做开发工具,也可以加个壳就变 成一款成熟产品(PDA、MP3、电子书、万年历、名片夹、小游戏机、手持示波器)。
我的学习方法总结起来,有几个核心思想,我先向大家解释一下这些核心思想,当然这些思想,不仅 可以用到嵌入式学习中,同样也可以用到生活学习工作的方方面面。
1. 做聪明的懒人。不记得是什么时候,我发现这个世界是懒人创造的。懒得走路,于是有人发明了 自行车;懒得干手工活,于是发明了机器;懒得洗衣服,于是发明了洗衣机。这个时候也许有朋 友想起自己床底下的臭袜子开始为我这段话自豪起来。但是我想告诉你的是,光做懒人没用,要 做聪明的懒人才行,懒得动手的人,一定勤于动脑。世界上所有的创造力都来源于解决困难和追 求享受两个因素。当你遇到问题时,你是否会静下来思考呢,是否会比较出各种解决方案的差异 呢。如果你生活中常常有这样的步骤,那么可以说你是个很乐趣的人。在我的学习路途中,我一 直做一个懒人。我从来不强迫自己去做不想做的事情,我只是引导自己走最简单的路。我从不记 各种繁琐的常用的知识点,因为我深信用多了自然能记住,于是手头总是有很多参考书,他们在 帮我记。有时我也懒得翻书,于是搜索引擎和网络成了我最好的朋友。有时连搜都懒得搜了,旁 边有高手,什么问题就都问他,既省事,问多了自己不好意思一不小心就记住了。
QXW /酷学玩™
自序
Www.Karlno.Com
我知道每个嵌入式学习者都有自己的梦想,当然我也有,每当我把自己的某些想法用嵌入式系统开发 成实物,我心里的愉悦和成就感是无法形容的,我想这就是一直以来我努力追求自己梦想的原动力吧。
从我接触嵌入式到现在快有Baidu Nhomakorabea个年头了,在这四年学习嵌入式的过程中,我经历了很多挫折和失败, 而这些挫折和失败,却使我在这四年里迅速成长起来。我先后到过几家不同的公司任职,却苦于找不到一 个合适的成长环境;我也曾开发过各种项目,却苦于找不到人投资;我时刻提醒自己要努力的去学习和创 造,却苦于无法将自己的能力层次提高到一个的高度。一开始,我总是会把失败的原因归结到客观因素, 或者那些感觉无法改变的主观因素。例如生不逢时啊,性格如此之类。当经历了总总之后,我发现,与其 寂寞的等待曙光,不如张开翅膀去寻找光明,有时候,你开始走了,才会有路。
更多详情请访问淘宝专营店 Q-ShareWe.Taobao.Com,或登录官方网站 Q-ShareWe.Com。 第 3 页
QXW /酷学玩™
Www.Karlno.Com
已。到现在,我终于明白,成功的路有千万条,成功的法则有千万句,但是成功的本质只有一句
话,就是坚持到底。另外,教大家一个坚持的方法。当你做一件事情已经厌烦的时候,那就什么
今天开始写第一篇技术日记,pcb 板也在今天画好了,所以给自己的标题是开始一段新旅程。 一般来说,每一个产品开发,每一个开发工程师,都有自己的调试环境和步骤。就我遇到的产品而言, 基本上有两种环境。(有时招聘面试官也会问起这个,嘻嘻)。 第一就是对于底层程序,也就是汇编程序,这类程序的调试必须借助 Jtag,因为 Jtag 可以单步调试啊, 进出循环啊。比如在移植操作系统的时候,如果调试器不支持单步,那真的是一件非常痛苦的事情(不排 除有些牛人不需要单步,呵呵)。 第二就是对于应用类的程序,也就是我们常用的 C 或者 C++,基本都是用串口(UART/UARST)输出 信息来调试板子。这类应用,因为底层基本都写好了,有操作系统啊,有 Bootloader 程序啊,底层是不会 出问题的。而且有现成的 printf 函数,用宏定义把各个模块包起来,需要的时候调用 printf 打印系统信息到 串口,就能够知道系统的运行流程和轨迹,基本上都能够解决问题。如果这种情况下用 Jtag 调单步,基本 能把人搞晕的。所以在一般的产品开发里,都是直接用编译器生成 bin 或者 hex 文件,烧到板卡里,看串口 信息进行调试。而我们生活中的很多产品,比如路由器啊,猫啊,数字设备啊,把外壳拆开,都能见到很 明显的串口引脚。 这里不得不提一下开发板的设计,在众多的开发板中,基本都能见到大大的串口和 max232 芯片,有些 板子还一口气接了两个。实际上,在公司里看见的产品,都不会接出的,产品直接接出 CPU(STM32)的 TX 和 RX 引脚,即 UART 引脚。而一般的程序员都有一个调试小板,就是把 TX 和 RX 转换成电脑的 TTL 电平,接到 PC 的串口,然后在 PC 的超级终端就能看到串口打印的信息。而现在,因为很多电脑主板和笔 记本已经不带串口了,因此酷学玩™系列产品附赠一个“USB To TTL”的模块,通过这个模块,连接开发 板上的 TX、RX 和 GND 到电脑的 USB 口,同样可以在串口软件上看到板卡的串口输出信息。此模块需要 安装驱动,驱动路径:产品光盘\开发环境\USB 转 TTL 驱动。 这本日记,不打算写成长篇累牍的教程,因为在我以前的学习经历中,很多时候,让你茅塞顿开的并 不是繁杂的文档,有时仅仅是过来人的一句话。所以我希望自己的日记更能从思维的角度,让一个初学者 看清楚每个模块到底是怎么回事。有时,事情就是那么简单!
QXW /酷学玩™
Www.Karlno.Com
一个嵌入式工程师的 STM32 开发日记
-- 酷学玩 Summer 板官方教程
文档版本 1.0 最后更新日期 2010-10-25
更多详情请访问淘宝专营店 Q-ShareWe.Taobao.Com,或登录官方网站 Q-ShareWe.Com。 第 1 页
事实上,在此之前,我并没有接触过 STM32 的开发工作,可以说此时的我对 STM32 的了解还不如读 者的多。然而因为之前在嵌入式这一行的经验,我相信在不久之后,我便可以迅速的在 STM32 上开发出我 想要的软件系统。而这得益于一直以来我引以为豪的学习方法和学习能力。这将是一段非常奇特的过程, 我将以一个成熟嵌入式软件工程师和一个 STM32 初学者的双重身份来和大家分享我的学习体验。我希望在 我写完这本日记或者说在读者读完这本书之后,读者不仅能够对我的学习思想有一个认知,同时也对读者 自身的学习思想进行一个总结,我相信这会对你以后的学习和工作大有裨益,这也是我写本书的目的。另 外,此日记请配合相应代码进行阅读,这样会让你学得更快。
事情起源于我想买一款开发板,因为枯燥乏味的重复工作实在让我找不到什么乐趣。然而 TAOBAO 逛 了一圈,竟然没有一款可以看上眼的。我发现自己工作之后,接触的产品多了,看开发板的角度也渐渐不 同起来。和几个卖家联系了之后,他们同样的观点就是购买者众口难调,没法开发出一款大家都满意的产 品。因为找不到合适的板子,我才决定自己画一款,当然,这之前我还没画过 PCB 呢。
都不想,麻木的去做,适应了这种麻木,成功就不远了。一句话,忍无可忍,就重新再忍。
更多详情请访问淘宝专营店 Q-ShareWe.Taobao.Com,或登录官方网站 Q-ShareWe.Com。 第 4 页
QXW /酷学玩™
日记
Www.Karlno.Com
2010-3-23 阵雨 - 开始一段新旅程
更多详情请访问淘宝专营店 Q-ShareWe.Taobao.Com,或登录官方网站 Q-ShareWe.Com。 第 5 页
QXW /酷学玩™
Www.Karlno.Com
2010-3-24 阴 – 调试环境
这里先给大家介绍一下本人经常使用的软件环境。对于熟悉的朋友可以略过本节。 一般来说,调试板卡,软件环境分三部分,第一是编译环境,也就是将我们写的 C 语言和汇编程序变 成 CPU(STM32)可以识别的 0101 机器码的软件。例如我们后面要用的 Keil UV3,这个软件就可以将我 们写的 C 语言程序变成 Hex 文件,Bin 文件,这两种文件里包含的就是 CPU 可以识别的机器码,机器码就 相当于一条条已经在 CPU 里预设好的指令,这些指令是 CPU 生产厂商定义好的,我们只管用,不用太操 心。每个机器码代表不同的含义,比如乘法啊,位移啊。所有的机器码组合起来,顺存储的地址执行(当 然其中可能会发生跳转以实现循环等),就构成一个我们能所见的程序。这里闲话说一下 Hex 文件和 Bin 文 件的区别,这两个文件里都包含 CPU 可以执行的机器码,只是 Hex 比 Bin 多一些信息,就是机器码的存储 地址。这些存储地址实际是给烧写程序的软件使用的。如果我们烧写 Hex 文件到板卡里(Flash 存储器), 烧写软件就不会问我们存储地址,因为这个文件里已经包含了这类信息了,这类信息是编译器在生成 Hex 的时候加进去的,当然编译器会有对应的项要你填写。如果是烧写 Bin 文件,烧写软件就会询问你要烧写 到哪个地址。一般情况下,CPU 会从 0 地址开始执行程序,但是有些 CPU 是从其他地址开始的,所以这个 起始值要视情况而定。而且有时为了调试方便,有些工程师会把 Bin 烧到 RAM 里。 第二个软件环境就是编辑环境,也就是我们写代码的地方。STM32 的调试里,编辑环境也是 Keil UV3, 我们在 Keil UV3 里写程序,关键字自动会高亮,注释会自动醒目,这些都是编辑环境的功能。说白了,编 辑环境可以简单到一个记事本程序,只是供你记录下代码而已。 但是我们这里不推荐用 Keil UV3 做编辑环境,因为 Keil UV3 的编辑环境实在是不怎么样。一般业界 使用一个叫 Source Insight 的编辑器(产品光盘“开发环境”文件夹下有)。这个编辑器功能非常强大,我 负责向大家推荐这个编辑器,但是如何使用需要朋友们自己上网搜搜了,很好用的软件,有汉化版,多摸 索,你会喜欢上他的。今后我也会使用这个软件给大家讲解。这里提一点,因为编译器是 Keil UV3,默认 的编辑器也是 Keil UV3,所以你用 Source Insight 打开代码进行修改时,Keil UV3 会提示你代码被外部修改, 是否要重新载入,我们当然选重新载入,可是老是跳出这个框子很是烦人,其实是可以去掉的。在 Keil UV3 的菜单栏里,选择 Edit >> Configuration,在跳出的对话框中,Editor 选单中,将“Automatic reload of externally modified files”选项勾上即可,如下图:
得益于幼时父母对我的良好教育,我从来都是一个善于独立思考的人,我希望所有读者都能和我一样, 用自己独特的眼光去观察和分析问题。在我学习嵌入式初期,我也探索过很多学习方法,到最后却弄得自 己很混乱,直到最后,我才发现,好的学习方法其实没那么神奇,它就是你在学习过程中保留下来的能够 增强效率的好习惯而已。当这些好习惯积累下来,就是你自己的核心竞争力。
3. 善于引导自己。这个世界上的人有各种不同的兴趣爱好,我想这就是这个世界丰富多彩的原因。 每个人都会发现,做自己不情愿的事情时,效率很低。所以我鼓励我所有的朋友都从事自己感兴 趣的行业,这样的人生才会精彩。当然,有很多朋友已经上了另一条路,才发现自己真正喜欢的 事物。这时转身投入自己感兴趣的行业,一是怕丢了现在已经得到的导致终身遗憾,二是怕起步 太晚赶不上人家。我也有不少这样的朋友,其中有一个大学同学,是学建筑的,发现自己喜欢嵌 入式,我当时极力鼓励他搞自己感兴趣的东西,不要怕,要是怕就努力埋头去做,不给自己的后 悔留路。结果现在也才过去三四年时间,他已经在北京一家软件公司做开发工程师了,懂得东西 比我还多。所以我说,在人生的路上,你一定要明白什么是你最想要的,你要懂得如何引导自己 去走一条正确的路,这样的人生才会有意思。
同时,你若对酷学玩系列产品有任何意见和看法,请让我得知,一款产品的改进离不开使用者的反馈 和支持,在此表示感谢,联系邮箱:YuanYin1985@126.Com,联系 QQ:58081686。
袁崟 2010/03/11 晚
更多详情请访问淘宝专营店 Q-ShareWe.Taobao.Com,或登录官方网站 Q-ShareWe.Com。 第 2 页
QXW /酷学玩™
Www.Karlno.Com
你需要学什么
在我最开始学嵌入式的时候,对于一切知识如饥似渴,我总是担心自己接触到的知识面不够多,难以 对付实际应用。于是我日以继夜翻看从图书馆借来的书籍,省吃俭用存钱买开发板实践,学完一样马上迫 不及待的马上接触另一样。然而这些年来,我越发明白,一个人懂得越多,其不懂的东西就会更多。这种 对未知世界的恐慌是没办法战胜的,因为人的精力有限,并且我们需要这种恐慌给我们带来学习的动力。 但是,我们却可以克服这种恐慌给我们带来的负面影响,方法很简单,就是掌握行之有效的学习方法。
相关文档
最新文档