打印
[应用相关]

浅析为什么要使用ST的固件库

[复制链接]
1007|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xia00|  楼主 | 2016-10-22 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发现网上经常有人问库的问题,下面说说我的理解,我做嵌入式也蛮久了,接触的构建也蛮多,也许我的观点能给大家一点借鉴。

什么是库?在我接触stm32之前,玩过lpc和s3c系列的arm,这些芯片,程序员编程的时候,很大精力都要用在操作寄存器上,而且还不能保证自己的操作是稳定及正确的。在保证对寄存器的操作正确之后,程序员才能将精力放在应用及系统之上,而应用和系统,对程序员而言,其意义往往大于对芯片本身寄存器的理解。因为,芯片只是工具,你理解了一个芯片的寄存器操作之后,玩一下个芯片,又需要重新去理解新芯片的寄存器操作。对于学习者而言,去学习寄存器是必要的,因为你要完成知识的积累(量变)。然而对于成熟的嵌入式工程师,都希望尽可能在芯片本身上花的时间少,因为他们希望产品开发周期尽可能短。成熟的嵌入式工程师,都会花大时间去研究应用和系统框架,因为这些东西可以用在任何一个芯片构架之上,是不变的(思维)。工具(芯片平台)不管如何换,都是万变不离其宗的--一个处理器而已。正因为出于这种考虑,st针对stm32芯片出了库,所谓的库,就是针对stm32这个芯片,将寄存器的操作都写成函数,提供函数API给程序员,并且可以保证这些函数的稳定性及正确性。程序员就会从操作寄存器这繁杂的工作中脱离出来。需要使用stm32某个模块时,只需要翻翻库的api调用方法,或者找找例程,就可以很轻松的用库里的函数(api)操作stm32的某个模块。就我而言,今年三月份之前,我还不知道stm32到底是个什么东西。现在呢,我已经在stm32上写了包括各种驱动例程和酷系统(Q-OS)在内的比较复杂的程序,可是对于stm32某个模块具体是如何操作寄存器的,我还真不知道,因为我一直是用库的。

现在很多学习者是本末倒置的,本来st出库,是为了解放程序员对寄存器的繁杂操作。可是现在没有经验的初学者,都拼命想去了解库是怎么实现的,是怎么操作寄存器的。有一种貌似要玩哪个模块,就必须懂得寄存器操作这样的观念等等。这些观念不能说是不正确的,因为我很能理解初学者对未知世界的探索欲。但是这样不讲究方法的学习,到最后得到的结果就是学习者四处碰壁,问又没人问,找答案又找不着,结果灰心丧气,打击了自信心,对嵌入式学习的动力也没有了。

我比较赞同的观点就是,对于一个只接触过单片机的初学者而言。不要再将学单片机的一套方法用在stm32上。初学者大可以放下心来,第一次学的时候,不去追求库的具体实现,不去过问如何操作寄存器,只是放心的调用库的api,相信库的可靠性(实际上它真的很可靠)。多研究下库里每个模块都有哪些api,api如何使用,有些什么参数,返回的是什么值等。我相信这是很简单的事情,因为很多api看名字就知道怎么用了,何况网上还有这么多例程和文档可以参考。然后组织这些api,写出你想要的有趣的应用,提升自己对嵌入式的兴趣,保障自己的信心。要记住,你第一遍是在享受库给你提供的快捷和方便!等你对stm32的每个模块都有了了解,第二次学的时候,因为有了全局观和信心,你再耐下心来,随便挑个模块研究下库的实现,研究如何操作寄存器,寄存器操作有什么技巧等等。我相信这个时候,难度已经大大降低了。

用我说的这种方法,层层深入,学会引导自己,才能够大大降低学习难度,让自己真的了解stm32是个什么东西。永远要记住,库和stm32以及其他芯片,都只不过是个工具而已,掌握工具是必须的,然而核心的关键的,是思维!




下面借这个机会向大家介绍一下我总结的“工具思维方法_论”,抛砖引玉,希望和大家交流!

这两年来,我接触的事物非常多,本来就是个闲不住的人,兴趣又广泛,精力无限。经历多了,自然感悟就多了,感悟多了,很多东西就看开了。今天我写在这里的,就是这几年以来,我所塑造的属于自己的人生哲学。我不清楚这一套方法理论是不是适合别人,但是就我而言,它已经能帮我解决生活中的所有事情,我希望看我**的人,对自己的思维也能有相同的思考,或者从我的方法里能够得到借鉴。

在参看我的方法_论之前,如果你了解王阳明心学,那就更好了。我的方法_论,完全基于心学,是一个实践性扩充而已。

我从高中开始知事,懂得去努力争取自己想要的,那时的我,为了一所好大学而努力,去克服心中最原始的人性弱点,如懒惰、软弱、虚荣等。我当时虽然不知道像今天一样去引导自己,但是正是因为这种艰辛的环境,促成了我对自己情商最基本的认识,懂得去约束自己,为我未来的成功之路迈出了第一步。

在大学里,我跟很多人一样,想要实现自己的价值,想要自己赚钱养活自己。于是我做了很多事情,学生工作、家教、卖报纸、推销电话,只要是我想尝试的,我都努力去尝试。正因为这点点滴滴的遇事,让我开始懂得观察和思考,去探索自己最内心的思绪。

我大学的时候,在知识上完成了两次积累,一是对平面设计网页设计的知识积累,大概学了一年多的时间,曾一度希望靠做网站赚钱养活自己。二是对嵌入式的积累,在我接触单片机的那一瞬间,我就知道这辈子已经交给嵌入式了,而嵌入式,也必将成为我人生最重要的工具。因为这两次知识积累,我都是靠自学完成的,没有谁教我什么,一切都是靠自己摸索。所以深刻的相信,很多路,真的没人可以供你借鉴,只有靠你自己走,才能走出来。也正是这些学习经历,我开始懂得如何引导自己,我曾写过一篇《写在大学最后的一些话》,就是讲述如何找到自己的兴趣,利用自己的兴趣去克服学习遇到的困难,去克服人性的弱点。

毕业之后,我也做过自己的产品,借此而创业,当然现实残酷的打击了我。我还换过好几份工作,结果发现都不是自己想要的工作。我曾一度迷茫,不知道未来会怎样,不知道中国是否有适合我的工作。我也一度很疯狂,拼命的学习新的东西,希望新的东西能够带给我更多的竞争力,让应聘单位知道我是一匹好马。我不断的反问着自己的人生,不断的思考,在这种基础下,两件事情改变了我。

第一件事情就是我看了一本书,叫《明朝那些事儿》,也许大多数人把这本书当小说看。但是我从来都是个喜欢多想的人,对于我而言,从这本书里感悟到的东西,远远比一本小说多。起码,我知道了王守仁,知道了心学,我才发现,我之前所总结的一切思想,原来是有依据的,原来也有人总结过(当然,我的总结比王守仁还差得很远,只能说我对自己的方法总结有向这个方向发展的趋势)。我开始成为一个唯心的人,我更加透彻的借助生活经历跟自己的内心对话。

第二件事情就是我开始炒股,从09年11月开始,我揣着自己的梦想和一万块钱进入二级市场,当然,我不是股神,现实也很残酷,虽然我小有自负,可是一万还是被我亏掉三千。现在也已经不记得当时的心痛,只不过我知道,我必须**。我曾不止一次的在自己写的东西里提到,促进事情成功的因素很多,可是决定成功的因素只有一个,就是**。当然,**也要有方法,我取出股市里的钱,告诉自己,如果不能将模拟股市中的十万变成十五万,就不再做实盘。于是在这样的环境下,我**认真对待自己的模拟盘,天天早上起来看新闻,每天花最少两个小时看盘。我跟一些老手聊天,他们说很难想象将虚拟盘看得和实盘一样,可是我做到了,它们在我看来是一样的。在我的**之下,我对股市的认识慢慢有了质的改变,更多的,我对自己人生的认识也有了质的改变。

我曾经在自己一系列的股市总结里提到,股市是人生的浓缩,做不好股市的人,人生也不会成功;人生成功的人,做股市也不会亏。我越来越发现股市和人生的共通:股市是赌,你每次下注,都不知道明天你的股票是跌是涨;人生之事也是赌,你永远不知道明天是加薪还是失业,你也不会知道你大学毕业后是得到什么或是感叹日子空虚。所不同的是,在股市里,你会拥有人性一切的弱点,只看虚幻的利而忽视风险。就是说,在股市里,你愿意下大筹码,去参与一个赢的概率小,但是赔率很大的赌局。而人生中,人显得更加理性,你愿意找一份安稳的工作,而不愿意去博一把,如创业,辞职再找更好的工作等等。相当于,在人生中,你愿意下小筹码,去参与一个赢的概率大,但是赔率比较小的赌局。

正是因为我人生的总总经历,加上当年明月对我的点拨,加上股市这场浓缩人生对我的摧残,加上嵌入式这项事业给我的实践机会,加上我自己勤于思考的习惯和我因为懒惰而学会引导自己的方法,让我终于有一天看通了所有的事情,让我完成了由量到质的蜕变。我发现,身边所有的所有,嵌入式,股市,工作,arm,开发环境,单片机,c语言,网页设计,google,淘宝,pcb,所有的所有,都只是工具而已,真正的核心,亘古不变的核心,只有一样,就是你的思维!

Photoshop\Dreamware只是一个工具,你要做的第一件事就是用自己的方法去掌握这个工具,完成量的积累。当你掌握这些工具,你的思维,才是决定你是否能成为优秀设计师的本质。你是否在看到一个平面广告或者网页的时候,默默的思考其最吸引人的理念?你是否在画图之前,就已经确切的知道,你要传递给看图者的感觉、理念或者价值是什么?你是否有一个思维库,将别人好的观念都放进来,将错误的思想都打上禁止符?

单片机、arm、操作系统、库也只是一个工具,你要做的第一件事情就是用自己的方法去掌握这些工具,完成量的积累。当你掌握了这些工具,你的思维,决定了你是否有成为优秀开发者的潜质。当你接触了足够多的构架芯片或系统,完成质变,你会发现,你和今天的我一样,你看所有的处理器,都是一样的,都是执行指令。你看所有的协议,都是一样的,都是指定io在指定时间指定电平。你学新的库,学新的操作系统,学新的构架,你不会再害怕,不再急躁,你会按部就班,从易到难,步步为营;你会发现,原来觉得不够用的资料,现在信手沾来,原来到处都是;你会发现,你不再去强迫自己记枯燥的知识,而是把握最核心的思想;你会发现,你不会再将自己的竞争力放在多熟悉一种芯片上,也不会放在年轻,**上,而是放在随着时间增长,经验增长会导致越来越完善的思维上。你会更加关注精而不是多,你会更加相信踏实的重要性,你会更加善于引导自己,而不是跟自己做斗争。你会发现,很多道理真的很简单很简单。这些是什么,这些就是思维!

股市,也不过是一个工具,它让你懂得人生的本质,要想赢,你就必须去参与赢的概率大的赌局,根据自己的承受能力去下注。它让你懂得,要克服内心的恐惧与贪婪,只有用自信和满足。它让你懂得,在最不能忍受的时候,依然要**。股市和人生,完全想通。这些是什么,就是思维!

创业,也只不过是一个工具,你要懂得自己在创造什么价值,是否有人需要这种价值,你如何将价值传递出去。做什么产品,只不过是个价值载体--工具而已!有了策划方案,有了营销手段,把握了思维,你才能赢。资金?工具而已!
沙发
feiqi1| | 2016-10-22 10:33 | 只看该作者
工具思维方法_论还有很多实践案例,人生之中所有的事情,都可以用这种论点来思考,来指导啊

使用特权

评论回复
板凳
androidbus| | 2016-10-22 10:37 | 只看该作者
工具是死的,思维是活的,遇到问题,一定要记住,你是万能的人,你要想办法,不能坐以待毙。

使用特权

评论回复
地板
litengg| | 2016-10-22 10:43 | 只看该作者
永远不要参与输的概率大于赢的概率的赌局,否则你失败,你**不下去,就不能怪任何人!

使用特权

评论回复
5
qiangweii| | 2016-10-22 10:44 | 只看该作者
量的积累是很漫长的,多思考,可以减少积累的时间啊

使用特权

评论回复
6
shashaa| | 2016-10-22 10:51 | 只看该作者
量的积累是很艰辛的,要学会引导自己,而不是跟自己做斗争!!

使用特权

评论回复
7
xia00|  楼主 | 2016-10-22 10:53 | 只看该作者
litengg 发表于 2016-10-22 10:43
永远不要参与输的概率大于赢的概率的赌局,否则你失败,你**不下去,就不能怪任何人!  ...

是的,太有道理了啊

使用特权

评论回复
8
xia00|  楼主 | 2016-10-22 10:53 | 只看该作者
有时慢比快好,当你有了全局观,有了思维,你可以从容不迫的去做事。

使用特权

评论回复
9
hfdy01| | 2016-10-22 11:01 | 只看该作者
看了楼主的**,我觉得做快乐真实的自己就好啦!

使用特权

评论回复
10
CallReceiver| | 2016-10-22 11:12 | 只看该作者
有了思维,你可以从容不迫的去做事。

使用特权

评论回复
11
643757107| | 2016-10-22 11:12 | 只看该作者
这个就是为了保证版本的兼容性,以及跟别人代码的一致性。

使用特权

评论回复
12
boy1990| | 2016-10-22 11:18 | 只看该作者
st出库是为了解放程序员对寄存器的繁杂操作的。

使用特权

评论回复
13
sourceInsight| | 2016-10-22 11:26 | 只看该作者
应该站在各种角度思考问题。。

使用特权

评论回复
14
laozhongyi| | 2016-10-22 13:47 | 只看该作者
对于stm32某个模块具体是如何操作寄存器的,我还真不知道。

使用特权

评论回复
15
lefeng| | 2016-10-25 21:29 | 只看该作者
库开发比较方便

使用特权

评论回复
16
Meter_601| | 2016-11-4 14:40 | 只看该作者
赞同楼主思维,芯片是工具,系统也是工具,C语言也是工具,好比一辆汽车,我们定义为交通工具,不必知道是怎么做的,知道开就行啦

使用特权

评论回复
17
我听闻| | 2016-11-4 17:34 | 只看该作者
马一下

使用特权

评论回复
18
mantor| | 2016-11-5 00:02 | 只看该作者
一家通百家懂,底层多少要了解,要不出bug都不知道哪里入手。

使用特权

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

本版积分规则

179

主题

1867

帖子

1

粉丝