墨竹缘先森吧 关注:26贴子:151
  • 10回复贴,共1
学习记录


IP属地:山东1楼2013-10-27 21:21回复
    1.1为什么要把时间花在“犹豫”上?
    每当我们在入门之前(ARM是这样,DSP也一样),总会会有很多疑问,会
    有很多顾虑。我们渴望知道学习STM32前景如何?需要啥基础?难不难?适不
    适合我?但是什么时候能心潮澎湃地、相当着急地开始学STM32?日子在一天
    一天过去!你开始行动了吗?没有行动的思索,永远都不可能入门!把这些时间
    用来看书吧,效果能好一万倍。
    大家一般都是从51单片机过来的,回想一下,我们之前学单片机时如何入
    门呢?实际上都是先看书(理论),再玩板子(实践)。严格地说,应该是模仿实
    验。熟悉之后才会自己写程序代码实现某个功能。因此,如果你正在咨询STM32;
    如果你正对STM32心潮澎湃;如果你想入门STM32;那么,从现在开始,不要
    犹豫了,不要想再详细地了解STM32的前景了。做一个可能影响你一生的决定
    吧!不用咨询,不用兴奋,开始看书籍(文档)吧!!每个人都是这么走过来的。


    IP属地:山东2楼2013-10-27 21:22
    回复
      1.2看资料需要计划、耐心和速度
      这里所谓的“资料”包括STM32书籍、文档。因为STM32有个特点,datasheet
      很多都是中文的,有些同学就没有去买书籍,直接看STM32的用户手册,也是
      可以的。但是不管看书籍还是文档,我们是需要计划的。不是今天看3页,明天
      看5页。一本书看了两个月,还在磨蹭。请记住,你学的不是寂寞,是STM32!
      看书或文档不是用来消遣时间的。背水一战吧,给自己规定一个底线:两周内
      一定把书或文档粗略地过一遍!不要求都看懂,事实上,不可能都看懂。但我们必须理解基
      本知识,对难度高的知识有一个印象,至少以后碰到问题的时候,我们会似曾相
      识,感觉在哪里见到过,于是翻资料上网找答案——带着问题的时候,效率才是
      超高的。
      两周过去了,STM32的知识你过一遍了吗?没看完?那么,你应该考虑这些
      天中,你是否尽力了?是否真的想学STM32?或者还是看到STM32人气很高,
      也想跟下时髦?是不是碰到问题没法解决就想放弃了?现在是你做第二个决定
      的时候了,请决定你是否继续攻读STM32。如果是一时冲动想跟时髦,请马上
      放弃——你已经浪费两周时间了,你还想再浪费14天吗?如果想吃得苦中苦,
      方为人上人,OK,请继续往下看。


      IP属地:山东3楼2013-10-27 21:24
      回复
        1.3学STM32必备开发板
        稍微了解一些理论知识后,现在摆在你面前,有两条路:
        第一,自己画PCB制板、焊接、调试。
        第二,购买一套性价比高的开发板。
        笔者之前做过几次PCB设计,而且当时在实验室可以报销所有费用,就自
        己做了一个PCB板。建议有报销条件的同学自己设计一块板子学习。毕竟2层
        PCB的设计不是很难。
        无法报销的同学,可以选购一款开发板学习。因为自己出钱制板,至少需要
        150元,加上芯片元件费用、液晶屏费用,可能制作最小系统也要约250元。所
        以购买开发板还是比较合算的。毕竟现在市场上的STM32开发板已经白菜价了。
        这里不方便进行各个品牌STM32开发板的比较。
        总之一句话,选购的开发板一定要性价比最高的,最实惠的,而不是最贵的。
        实际上,大多数同学选购的开发板是用来学习的,不是用来项目开发的。因此,
        能让你上手STM32,目的已经达到了。


        IP属地:山东4楼2013-10-27 21:26
        回复
          1.4熟悉开发板并试图写程序
          这时的你,不能再停留在理论上了。你现在的心情,应当是:看到开发板,
          马上就有一种说不出的兴奋!但是,心急吃不了热豆腐!请耐心把厂家配套的开
          发板使用手册浏览一遍,熟悉你买的开发板。按照使用手册,把开发板上的相关
          测试、操作步骤,都动手做一遍,你会发现,原来开发STM32是如此简单!那
          么就让我们开始STM32的开发之路吧!
          如何进行真正入门STM32,请看第二章《STM32入门方法谈》。


          IP属地:山东5楼2013-10-27 21:27
          回复
            2.1拿到开发板我该做什么?
            国内用户有一个普遍现象:用户拿到开发板后,不知道如何下手。由于没有
            自己的思路,又是初学者,也没有好的突破口,因此,买来开发板后,开机,看
            看触摸屏,感叹“好漂亮”的屏幕显示,然后就迷茫了。开发板是不会告诉你如
            何使用它的。开发板的光盘?光盘里放置一大堆资料——我该先看哪个?后看哪
            个?总之,我如何开始STM32的入门学习??
            针对该现象,芯达STM32开发板对广大初学者进行详细说明。请用户在购
            买芯达STM32开发板后,做两件事情:
            1、给开发板上电,查看开发板、液晶屏显示是否运行正常(HEX下载测试
            功能还需学习完J-Link后方可进行)。
            2、根据我们编写的入门教材系列,按部就班进行。该套教程从酝酿到编写
            历时2个多月时间,教程涉及的内容:从拿到开发板后如何安装J-Link、MDK
            (keil)调试软件的讲解开始,一直到最后STM32上的UCOS移植,每个文档
            力求讲解通俗、详细,让您更快上手STM32。有了专门的配套教程,会让您在
            学习STM32的过程中少走许多弯路,提高学习效率了。总之,它将带您进入
            STM32的精彩世界!我们相信,在您的努力研究下,独立地进行简单的STM32
            开发,只需要不到一个月时间!(网络上有号称只要短短的x天就学通STM32,
            笔者认为难度较大。笔者从事STM32开发,辞职后,进行教学工作,有一段时
            间了,但是,还不敢说学通,还不过是菜鸟而已,自认为:高级菜鸟。


            IP属地:山东6楼2013-10-27 21:29
            回复
              2.3碰到问题怎么办?
              学习难免会遇到问题。在公司参加培训的时候,学员被告知:困难即机会。
              所以希望大家坦然面对问题,不能逃避。一小部分同学在遇到问题的时候,总是
              想:能否避开走另一条路?比如调试程序,某一个程序的语法不太懂,就想用另
              一种表示方法来代替,或者直接注释掉。——这是很可怕的。因为你现在一旦放
              过一个问题,可能意味着你一辈子可能都没有机会去碰这个问题。那么你的技术
              无法进入最高境界。我们是为学习而来,说难听点,我们现在的付出,是想以后
              能有更好的回报的。
              此外,碰到问题,不能马上就到处求助。原因:
              1、这个问题可能是你的疑问,但它还不具体,你无法用最好的语言让别人
              接受、理解,并且回答它。很多网友看到模凌两可的问题,是不会回答的。比如
              Linux如何移植?这个问题,如果详细说,需要用半本书来解释——没有人愿意
              花两三个小时告诉你如何移植。所以这时候,你要做的,是先去查资料,自己试
              图解决它。当碰到某一个具体的步骤,实在想不通的时候,比如Linux移植过程
              中,文件挂载打印卡住了。这个现象,可能对有经验的人来说,一句话就能点破。
              而你因为有先前研究的基础,一听即可知道哪里出问题。这样的方式,学习效率
              是最高的。
              2、CPU是相通的,相信大部分的同学都学习过单片机,是有一定基础的。
              如果你碰到问题,去尝试了,自己把问题解决了,你会很有成就感!!因为这是
              你独立思考的结果!!当然,你应该写一个总结文档,收藏在PC中备忘。也可
              以把总结文档发帖到论坛上(比如:www.arm79.com),这样的原创文档,跟帖
              率是最高的。慢慢地,你在这个领域,有了网络知名度。——这绝对是一笔财富。
              当然,笔者在此并不是不让大家使用别的方式讨论问题。相反,我提倡大家
              踊跃发言讨论。刚才是就事论事,也是笔者自己的一点小经历。经历了,才发现
              如何做才更有效率。


              IP属地:山东8楼2013-10-27 21:33
              回复
                3.1关于STM32文档学习
                本期教程,我们假定大家已经对STM32的书籍或者文档有一定的理解。如
                不理解,请立即阅读STM32的文档,以获取最基本的知识点。
                STM32的学习与ARM9的学习有一个很大的区别。ARM9的学习一般是需
                要购买书籍的。比如三星的S3C2440,官方的文档都是英文的,大部分工程师只
                能去看国内出版的书籍。英文好的同学,请不要以为你很牛,可以只看英文文档。
                毕竟你是中国人,你最熟悉的,理解最好的还是中文。看英文的速度还是比看中
                文慢一些,我们要的是最短的时间,而不是追求短时间内记住所有细节。当然,
                如果是一篇论文,建议看英文原版还是有好处的。
                STM32处理器进入国内市场时候,ST官方(或者第三方)的推广工作做的
                非常好。翻译了大量的英文文档,迎合了国内的很多工程师的思维。所以现在大
                部分STM32F103xxx的用户datasheet都有中文版。因此可以不用去购买书籍,
                看电子档即可。当然,有雄厚经济条件的朋友可以购买本书籍哈~
                学习的时候,关注两个比较重要的文档:《STM32F103xxx参考手册》,《STM32
                固件库使用手册》。ST官方的所有中英文文档,在ST的中国大陆区网站可以下
                载到:
                http://www.stmicroelectronics.com.cn/stonline/mcu/MCU_Pages.htm
                该网址,是针对有充足的时间、精力的同学,建议去下载需要查阅的文档,
                以获取更多信息。
                阅读《STM32F103xxx参考手册》,一定要注意,不需要全部阅读——没有
                时间的。建议选读,但是前几章必读。存储器和总线架构、电源控制、备份寄存
                器、复位和时钟控制,通用和复用功能I/O,中断和时间等等前几章一定要花时
                间阅读。
                后面章节,讲述的是具体的功能模块设计。如果我们用到哪个模块,就可以
                去阅读哪个模块。比如在使用AD的时候,就需要去阅读第10章ADC。其他不
                举例。相信每个初学者都有自己的研究方向和判断。
                阅读《STM32固件库使用手册》,主要是为了简化编程。STM32给我们提供
                了一个非常好的固件函数库,我们只要去调用即可。当然,我们也可以不去碰这
                些固件库——传说使用它会使得代码效率变低,是有道理的。网络上也出现了
                很多网友自己写的代码,没有使用带固件库函数。如何取舍,在于您的选择。
                这里我主要强调的是,阅读《STM32固件库使用手册》的时候,前面几章也
                是必须阅读的。比如第一章文档和库规范中的命名规则,编码规则,这些都是
                需要注意的。第二章是最关键的,希望大家熟读。第二章描述了固件库的架构,
                我们如何去使用固件库的步骤等。有了第二章的基础,我们就可以借助固件库写
                出自己的代码了。第四章开始之后,就可以根据大家的需要来阅读。实际上,后
                续的章节,都是描述某个模块有什么什么函数,每个函数如何使用等。
                关于后面的章节,建议对GPIO库函数、中断部分库函数、复位和时钟设置
                的库函数要比较熟悉,因为平时经常会用到。
                以上提到的这两个文档,已经足够您看的了,呵呵。希望您能从中获取大量
                的STM32基础知识。


                IP属地:山东9楼2013-10-27 21:44
                回复
                  3.2.1第1步:熟悉调试软件
                  对初学者来说,我们至少需要安装两个软件:J-Link驱动软件、MDK(就是
                  原来的Keil)软件。这两个软件,用《乡村爱情》里的一句话“必须的!”
                  安装软件的过程,这里不再重复,大家可以参考我们推出的教程《如何安装
                  J-Link驱动软件》以及《如何安装MDK(Keil)软件》。
                  如何验证自己已经熟悉调试软件的操作了呢?很简单,芯达STM32开发板
                  光盘里附带了很多HEX格式的文件,可以选择一些HEX文件,来观察运行结果。
                  比如LED灯的例程HEX文件,下载到芯达STM32开发板中,观察两个LED灯
                  的闪烁情况。灯在闪烁,就说明你刚才的操作已经把HEX文件烧写到闪存中了。
                  该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别
                  问题所在,并独立解决。


                  IP属地:山东11楼2013-10-27 21:47
                  回复
                    3.2.2第2步:GPIO编程
                    这是第一次接触固件库的编程,一定要硬着头皮去了解固件库。建议大家尽
                    量去用固件库。而不是避开固件库自己写代码——这样只能在学习中才会发
                    生。实际的项目中,代码成百上千个,如何一个一个自己写?调用固件库中的函
                    数来完成,才是王者之道。
                    GPIO本身的编程实际上很简单:
                    1、设置GPIO口的引脚为输入或者输出模式。我们在进行点灯代码的时候,
                    一般设置为推挽输出模式。
                    2、操作寄存器,往寄存器里置1或者清零操作——这个步骤,固件库已经
                    提供了专门的GPIO_SetBits函数和GPIO_ResetBits函数,我们只要去调用即可
                    实现对IO口的置1和清零。
                    3、实现多种花样的LED闪动,使得自己熟悉GPIO的编程过程。
                    但是在调用固件库的时候,我们还需要有GPIO结构声明,结构成员初始化,
                    系统时钟配置等等注意事项。可以参考我们推出的《GPIO编程》文档。
                    该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别
                    问题所在,并独立解决。


                    IP属地:山东12楼2013-10-27 21:48
                    回复
                      3.2.3开始全新的STM32深入研究
                      经过以上调试软件的熟悉和GPIO口的编程调试后,相信您已经对STM32
                      有一定的了解。至少知道如何利用STM32的固件库去写一个代码。OK,下面我
                      们将开始全新的STM32深入研究。在这个阶段,将要接触到串口编程、TFT液
                      晶屏驱动编程、定时器编程、串行外设接口SPI编程、存储器编程、SD卡与文
                      件系统移植、USB读写、UCOS移植等,有精力还可以研究其他外设。
                      由于篇幅及本教程主题限制,这里不详细说明每个模块都如何编程。请大家
                      参考我们的芯达STM32入门系列教程,该教程就是按照这样的思路进行编写的。
                      最后祝愿大家早日成为STM32的高手!


                      IP属地:山东13楼2013-10-27 21:49
                      回复