查看: 5037|回复: 8

学习STM32的经验!前辈的建议

  [复制链接]
  • TA的每日心情
    奋斗
    2016-6-12 21:59
  • 签到天数: 647 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-8-24 19:05:47 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 QQ哥 于 2012-8-24 19:40 编辑

    STM32 入门系列教程
    如何提高STM32 的学习效率?


    目录
    第一章笔者的入门总结
    1.1 为什么要把时间花在“犹豫”上?
    1.2 看资料需要计划、耐心和速度
    1.3 学STM32 必备开发板
    1.4 熟悉开发板并试图写程序
    第二章STM32入门方法谈
    2.1 拿到开发板我该做什么?
    2.2 我的时间如何安排
    2.3 碰到问题怎么办?
    第三章STM32学习步骤
    3.1 关于STM32 文档学习
    3.2 30 天上手STM32 计划
    3.2.1 第1 步:熟悉调试软件3.2.2
         第2 步:GPIO 编程
    3.2.3 开始全新的STM32 深入研究


    第一章笔者的入门总结
    1.1 为什么要把时间花在“犹豫”上?
    每当我们在入门之前(ARM 是这样,DSP 也一样),总会会有很多疑问,会
    有很多顾虑。我们渴望知道学习STM32 前景如何?需要啥基础?难不难?适不
    适合我?但是什么时候能心潮澎湃地、相当着急地开始学STM32?日子在一天
    一天过去!你开始行动了吗?没有行动的思索,永远都不可能入门!把这些时间
    用来看书吧,效果能好一万倍。
    大家一般都是从51 单片机过来的,回想一下,我们之前学单片机时如何入
    门呢?实际上都是先看书(理论),再玩板子(实践)。严格地说,应该是模仿实
    验。熟悉之后才会自己写程序代码实现某个功能。因此,如果你正在咨询STM32;
    如果你正对STM32 心潮澎湃;如果你想入门STM32;那么,从现在开始,不要
    犹豫了,不要想再详细地了解STM32 的前景了。做一个可能影响你一生的决定
    吧!不用咨询,不用兴奋,开始看书籍(文档)吧!!每个人都是这么走过来的。
    1.2 看资料需要计划、耐心和速度
    这里所谓的“资料”包括STM32 书籍、文档。因为STM32 有个特点,datasheet
    很多都是中文的,有些同学就没有去买书籍,直接看STM32 的用户手册,也是
    可以的。但是不管看书籍还是文档,我们是需要计划的。不是今天看3 页,明天
    看5 页。一本书看了两个月,还在磨蹭。请记住,你学的不是寂寞,是STM32!
    看书或文档不是用来消遣时间的。背水一战吧,给自己规定一个底线:两周内把
    一定粗略地过一遍!不要求都看懂,事实上,不可能都看懂。但我们必须理解基
    本知识,对难度高的知识有一个印象,至少以后碰到问题的时候,我们会似曾相
    识,感觉在哪里见到过,于是翻资料上网找答案——带着问题的时候,效率才是
    超高的。
    两周过去了,STM32 的知识你过一遍了吗?没看完?那么,你应该考虑这些
    天中,你是否尽力了?是否真的想学STM32?或者还是看到STM32 人气很高,
    也想跟下时髦?是不是碰到问题没法解决就想放弃了?现在是你做第二个决定
    的时候了,请决定你是否继续攻读STM32。如果是一时冲动想跟时髦,请马上
    放弃——你已经浪费两周时间了,你还想再浪费14 天吗?如果想吃得苦中苦,
    方为人上人,OK,请继续往下看:)
    1.3 学STM32必备开发板
    稍微了解一些理论知识后,现在摆在你面前,有两条路:
    第一,自己画PCB 制板、焊接、调试。
    第二,购买一套性价比高的开发板。
    笔者之前做过几次PCB 设计,而且当时在实验室可以报销所有费用,就自

    己做了一个PCB 板。建议有报销条件的同学自己设计一块板子学习。毕竟2 层
    PCB 的设计不是很难。
    无法报销的同学,可以选购一款开发板学习。因为自己出钱制板,至少需要
    150 元,加上芯片元件费用、液晶屏费用,可能制作最小系统也要约250 元。所
    以购买开发板还是比较合算的。毕竟现在市场上的STM32 开发板已经白菜价了。
    这里不方便进行各个品牌STM32 开发板的比较。
    总之一句话,选购的开发板一定要性价比最高的,最实惠的,而不是最贵的。
    实际上,大多数同学选购的开发板是用来学习的,不是用来项目开发的。因此,
    能让你上手STM32,目的已经达到了。

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

    第二章STM32入门方法谈

    2.1 拿到开发板我该做什么?
    国内用户有一个普遍现象:用户拿到开发板后,不知道如何下手。由于没有
    自己的思路,又是初学者,也没有好的突破口,因此,买来开发板后,开机,看
    看触摸屏,感叹“好漂亮”的屏幕显示,然后就迷茫了。开发板是不会告诉你如
    何使用它的。开发板的光盘?光盘里放置一大堆资料——我该先看哪个?后看哪
    个?总之,我如何开始STM32 的入门学习??
    针对该现象,芯达STM32 开发板对广大初学者进行详细说明。请用户在购
    买芯达STM32 开发板后,做两件事情:
    1、给开发板上电,查看开发板、液晶屏显示是否运行正常(HEX 下载测试
    功能还需学习完J-Link 后方可进行)。
    2、根据我们编写的入门教材系列,按部就班进行。该套教程从酝酿到编写
    历时2 个多月时间,教程涉及的内容:从拿到开发板后如何安装J-Link、MDK
    (keil)调试软件的讲解开始,一直到最后STM32 上的UCOS 移植,每个文档
    力求讲解通俗、详细,让您更快上手STM32。有了专门的配套教程,会让您在
    学习STM32 的过程中少走许多弯路,提高学习效率了。总之,它将带您进入
    STM32 的精彩世界!我们相信,在您的努力研究下,独立地进行简单的STM32
    开发,只需要不到一个月时间!(网络上有号称只要短短的x 天就学通STM32,
    笔者认为难度较大。笔者从事STM32 开发,辞职后,进行教学工作,有一段时
    间了,但是,还不敢说学通,还不过是菜鸟而已,自认为:高级菜鸟。)
    2.2 我的时间如何安排
    笔者做任何事情前,习惯写一个计划—— 可能是在公司的时候,每天、每
    周、每月必写计划和总结养成的“毛病”,呵呵。正如在上一节中提及:我们要
    用一个月内上手STM32!我们开始考虑,如何更好地利用好这一个月的时间呢?
    我想起了第一天公司入职的情景。我的工作导师让我先领一台PC,安装必要的
    软件,然后告诉我近一个月的任务是什么。当时我很不屑,因为刚参加了公司组
    织的培训,以为自己啥都会,但是失败了。原因:盲目进行项目,没有一个计划。
    没有计划的日子会很惨。就像每天早上醒来睁开眼睛,却不知道自己今天要
    干啥。闲话不说,我们谈一谈计划和时间安排。
    笔者认为,学习STM32,实际上也是进行项目的过程。进行项目,就必须有
    项目进度文档,至少需要预计项目的耗时。虽然没有那么规范,但建议大家至少
    要给自己一个时间表:告诉自己从2010 年x 月y 日至2010 年m 月n 日,必须
    能够进行独立的项目开发。比如定为30 天,把这个时间分三个阶段:
    第一阶段:找感觉—— 谈及STM32,立即反应到调试的方法如何。


    第二阶段:修改例程—— 按自己的意愿修改例程,让自己有点成就感。
    第三阶段:主动攻击—— 给自己找一个小项目,把它实现出来。
    每个阶段有一个目标后,再细化该目标到每天,写出每天要完成的任务。注
    意,每天的任务不可太多,否则时间太紧,完成不了当天的任务,反而会进入恶
    性循环,导致第二天、第三天,以后的任务也将无法完成。最终导致整个计划的
    失败。
    每天的任务需要根据自己的具体情况来定。如果有充足的时间,可以安排多
    一些任务。如果每天只有2 个小时,切记,宁可少安排任务,也不可追求加快项
    目进度。当然,心中有事情后,每天自然就会忙碌起来!你的学习生活会更加充
    实!
    2.3 碰到问题怎么办?
    学习难免会遇到问题。在公司参加培训的时候,学员被告知:困难即机会。
    所以希望大家坦然面对问题,不能逃避。一小部分同学在遇到问题的时候,总是
    想:能否避开走另一条路?比如调试程序,某一个程序的语法不太懂,就想用另
    一种表示方法来代替,或者直接注释掉。——这是很可怕的。因为你现在一旦放
    过一个问题,可能意味着你一辈子可能都没有机会去碰这个问题。那么你的技术
    无法进入最高境界。我们是为学习而来,说难听点,我们现在的付出,是想以后
    能有更好的回报的。

    此外,碰到问题,不能马上就到处求助。原因:
    1、这个问题可能是你的疑问,但它还不具体,你无法用最好的语言让别人
    接受、理解,并且回答它。很多网友看到模凌两可的问题,是不会回答的。比如
    Linux 如何移植?这个问题,如果详细说,需要用半本书来解释——没有人愿意
    花两三个小时告诉你如何移植。所以这时候,你要做的,是先去查资料,自己试
    图解决它。当碰到某一个具体的步骤,实在想不通的时候,比如Linux 移植过程
    中,文件挂载打印卡住了。这个现象,可能对有经验的人来说,一句话就能点破。
    而你因为有先前研究的基础,一听即可知道哪里出问题。这样的方式,学习效率
    是最高的。
    2、CPU 是相通的,相信大部分的同学都学习过单片机,是有一定基础的。
    如果你碰到问题,去尝试了,自己把问题解决了,你会很有成就感!!因为这是
    你独立思考的结果!!当然,你应该写一个总结文档,收藏在PC 中备忘。也可
    以把总结文档发帖到论坛上(比如:
    www.arm79.com),这样的原创文档,跟帖
    率是最高的。慢慢地,你在这个领域,有了网络知名度。——这绝对是一笔财富。
    当然,笔者在此并不是不让大家使用别的方式讨论问题。相反,我提倡大家
    踊跃发言讨论。刚才是就事论事,也是笔者自己的一点小经历。经历了,才发现
    如何做才更有效率。

    第三章STM32学习步骤
    在第二章,我们已经谈及到学习需要计划。那么,在这章节,我们就来详细
    地阐述这个计划—— 仅供参考。笔者是嵌入式爱好者,也是学习者,不是高手,
    是菜鸟,高级菜鸟。

    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 基础知识。

    3.2 30天上手STM32计划
    (1)这里所谓的“上手”,指的是能理解并掌握一些常用的STM32 外设,
    真正想掌握一款处理器,30 天根本说明不了什么问题。只能说,你已经入门了。
    但是,这对我们初学者来说已经足够了。
    (2)这里所谓的“30 天”,根据每个人的时间安排不同而不同。
    如果您每天有充足的时间学习,那么可以规定自己尽快地能独立地进行简单
    的STM32 开发。
    如果您每天只有业余时间来学习STM32,建议根据您的具体情况安排时间。
    毕竟计划时间如果安排太紧,反而收不到良好的效果,只能进入恶性循环,这是
    我们要避免的。
    但是建议,不管您有无充足的时间,都必须给自己做一个计划!!
    我这里列出一个思路,仅供参考。
    步骤一,安装完STM32 学习的软件,比如J-Link、Keil for ARM(MDK)、
    ISP(如果需要从串口下载的话)。这些软件安装的详细步骤,可以参考我们推出
    的相应教程进行。
    步骤二,挑选部分例程的HEX,比如LED 灯的例程HEX 文件,下载到芯达
    STM32 开发板中,观察两个LED 灯的闪烁情况。这部分的操作,可以参考我们
    推出的相应的教程进行。
    实际上,以上两个步骤,是为了熟悉要使用的工具软件而已。属于找感觉的
    阶段。其实我们还没开始STM32 的学习呢!
    步骤三,准备几个常用的文档,比如《STM32 的用户手册》,《STM32 固件
    库使用手册》等文档。用于平时查阅。这些文档,在光盘中的芯片手册目录中均
    可找到。
    步骤四,开始查看例程的编写,看看例程是如何写的,自己可否修改下例程,
    达到自己想要的效果呢?芯达STM32 开发板的光盘中为大家提供了丰富的例程
    代码,可以参考。您一定可以修改出更精彩的例程!
    步骤五,Ucos-II 的移植,是否需要试一下?
    恭喜你,至此,你已经可以自如进行独立的开发了。最后一步,给自己一个
    目标(项目),把它实现出来!
    再次强调,以上只是一个学习STM32 的思路,供大家参考。下面列出了前
    面关键的步骤,希望大家能尽快入门。后续的每个模块的编程,请参考我们的芯
    达STM32 入门系列教程。

    3.2.1第1步:熟悉调试软件
    对初学者来说,我们至少需要安装两个软件:J-Link 驱动软件、MDK(就是
    原来的Keil)软件。这两个软件,用《乡村爱情》里的一句话“必须的!”
    安装软件的过程,这里不再重复,大家可以参考我们推出的教程《如何安装
    J-Link 驱动软件》以及《如何安装MDK(Keil)软件》。
    如何验证自己已经熟悉调试软件的操作了呢?很简单,芯达STM32 开发板
    光盘里附带了很多HEX 格式的文件,可以选择一些HEX 文件,来观察运行结果。
    比如LED 灯的例程HEX 文件,下载到芯达STM32 开发板中,观察两个LED 灯
    的闪烁情况。灯在闪烁,就说明你刚才的操作已经把HEX 文件烧写到闪存中了。
    该步骤要达到的目标:熟悉调试软件,如烧写HEX 出现问题,可简单判别
    问题所在,并独立解决。
    3.2.2 第2步:GPIO编程
    这是第一次接触固件库的编程,一定要硬着头皮去了解固件库。建议大家尽
    量去用固件库。而不是避开固件库自己写代码—— 这样只能在学习中才会发
    生。实际的项目中,代码成百上千个,如何一个一个自己写?调用固件库中的函
    数来完成,才是王者之道。
    GPIO 本身的编程实际上很简单:
    1、设置GPIO 口的引脚为输入或者输出模式。我们在进行点灯代码的时候,
    一般设置为推挽输出模式。
    2、操作寄存器,往寄存器里置1 或者清零操作——这个步骤,固件库已经
    提供了专门的GPIO_SetBits 函数和GPIO_ResetBits 函数,我们只要去调用即可
    实现对IO 口的置1 和清零。
    3、实现多种花样的LED 闪动,使得自己熟悉GPIO 的编程过程。
    但是在调用固件库的时候,我们还需要有GPIO 结构声明,结构成员初始化,
    系统时钟配置等等注意事项。可以参考我们推出的《GPIO 编程》文档。
    该步骤要达到的目标:熟悉调试软件,如烧写HEX 出现问题,可简单判别
    问题所在,并独立解决。
    3.2.3 开始全新的STM32深入研究
    经过以上调试软件的熟悉和GPIO 口的编程调试后,相信您已经对STM32
    有一定的了解。至少知道如何利用STM32 的固件库去写一个代码。OK,下面我
    们将开始全新的STM32 深入研究。在这个阶段,将要接触到串口编程、TFT 液
    晶屏驱动编程、定时器编程、串行外设接口SPI 编程、存储器编程、SD 卡与文
    件系统移植、USB 读写、UCOS 移植等,有精力还可以研究其他外设。
    由于篇幅及本教程主题限制,这里不详细说明每个模块都如何编程。请大家
    参考我们的芯达STM32 入门系列教程,该教程就是按照这样的思路进行编写的。
    最后祝愿大家早日成为STM32 的高手!

    Copyright © 2009-2010 福州芯达工作室ALL rights reserved !
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-11-4 19:13
  • 签到天数: 281 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2012-8-24 21:13:25 | 显示全部楼层
    收藏,精读下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-12 21:59
  • 签到天数: 647 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-8-24 21:46:28 | 显示全部楼层
    小鸟愤怒 发表于 2012-8-24 21:13
    收藏,精读下

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-12 21:59
  • 签到天数: 647 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-8-24 23:16:31 | 显示全部楼层
    wyzamazon 发表于 2012-8-24 22:54
    就喜欢这种经验帖

    带着看故事的心态看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-8-7 21:35
  • 签到天数: 340 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-4-29 14:34:39 | 显示全部楼层
    QQ哥威武……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-12 21:59
  • 签到天数: 647 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-4-29 17:41:22 | 显示全部楼层
    kk5290122 发表于 2013-4-29 14:34
    QQ哥威武……

    不能霸气侧漏
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-1-12 22:37
  • 签到天数: 259 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-4-29 18:49:15 | 显示全部楼层
    记得以前貌似在哪里看过这个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-4 20:22
  • 签到天数: 168 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-7-5 16:27:17 | 显示全部楼层
    给我这种没摸过的指明方向啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-11-21 11:32
  • 签到天数: 409 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-10-10 13:59:14 | 显示全部楼层
    谢谢喽~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-12 08:51 , Processed in 0.202605 second(s), 30 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.