历史上的今天
返回首页

历史上的今天

今天是:2025年04月19日(星期六)

2019年04月19日 | STM32从菜鸟到牛人的学习方法

2019-04-19 来源:eefocus

1.首先我们先看看与STM32相关的文档

 我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解,请立即阅读STM32的文档,以获取最基本的知识点。

如果你手上拥有ST官方主推的STM32神舟系列的板子,那么光盘都会配好这些文档,STM32的学习与ARM9的学习有一个很大的区别。ARM9的学习一般是需要购买书籍的。比如三星的S3C2440,官方的文档都是英文的,大部分工程师只能去看国内出版的书籍。英文好的同学,请不要以为你很牛,可以只看英文文档。毕竟你是中国人,你最熟悉的,理解最好的还是中文。看英文的速度还是比看中文慢一些,我们要的是最短的时间,而不是追求短时间内记住所有细节。当然,如果是一篇论文,建议看英文原版还是有好处的。

STM32处理器进入国内市场时候,ST官方(或者第三方)的推广工作做的非常好。翻译了大量的英文文档,迎合了国内的很多工程师的思维。神舟系列的开发板就是迎合这种中国化,本土化,方便学习和使用;所以现在大部分STM32F103xxx的用户datasheet都有中文版,例子也很齐全,因此可以不用去购买书籍,看电子档即可。

学习的时候,关注两个比较重要的文档:《STM32F103xxx参考手册》,《STM32固件库使用手册》。该网址,是针对有充足的时间、精力的同学,建议去下载需要查阅的文档,以获取更多信息。

阅读《STM32F103xxx参考手册》,一定要注意,不需要全部阅读——没有时间的。建议选读,但是前几章必读。存储器和总线架构、电源控制、备份寄存器、复位和时钟控制,通用和复用功能I/O,中断和时间等等前几章一定要花时间阅读。

后面章节,讲述的是具体的功能模块设计。如果我们用到哪个模块,就可以去阅读哪个模块。比如在使用AD的时候,就需要去阅读第10章ADC。其他不举例。相信每个初学者都有自己的研究方向和判断。

阅读《STM32固件库使用手册》,主要是为了简化编程。STM32给我们提供了一个非常好的固件函数库,我们只要去调用即可。当然,我们也可以不去碰这些固件库——传说使用它会使得代码效率变低,是有道理的。网络上也出现了很多网友自己写的代码,没有使用带固件库函数。如何取舍,在于您的选择。

这里我主要强调的是,阅读《STM32固件库使用手册》的时候,前面几章也是必须阅读的。比如第一章文档和库规范中的命名规则,编码规则,这些都是需要注意的。第二章是最关键的,希望大家熟读。第二章描述了固件库的架构,我们如何去使用固件库的步骤等。有了第二章的基础,我们就可以借助固件库写出自己的代码了。第四章开始之后,就可以根据大家的需要来阅读。实际上,后续的章节,都是描述某个模块有什么什么函数,每个函数如何使用等。

关于后面的章节,建议对GPIO库函数、中断部分库函数、复位和时钟设置的库函数要比较熟悉,因为平时经常会用到。以上提到的这两个文档,已经足够您看的了,呵呵。希望您能从中获取大量的STM32基础知识。



2.设定一个不错的两周入门计划


(1)这里所谓的“入门”,指的是能理解并掌握一些常用的STM32外设,真正想掌握一款处理器,两周根本说明不了什么问题。只能说,你已

经有所了解了。但是,这对我们初学者来说已经足够了。
(2)这里所谓的“两周”,根据每个人的时间安排不同而不同。
如果您每天有充足的时间学习,那么可以规定自己尽快地能独立地进行简单的STM32开发。

如果您每天只有业余时间来学习STM32,建议根据您的具体情况安排时间。毕竟计划时间如果安排太紧,反而收不到良好的效果,只能进入恶性循环,这是我们要避免的。
但是建议,不管您有无充足的时间,都必须给自己做一个计划!!
我这里列出一个思路,仅供参考。

步骤一,安装完STM32学习的软件,比如J-Link、Keil for ARM(MDK)、ISP(如果需要从串口下载的话)。这些软件安装的详细步骤,可以参考我们推出的相应教程进行。

步骤二,挑选部分例程的HEX,比如LED灯的例程HEX文件,下载到芯达STM32开发板中,观察两个LED灯的闪烁情况。这部分的操作,可以参考我们推出的相应的教程进行。
实际上,以上两个步骤,是为了熟悉要使用的工具软件而已。属于找感觉的阶段。其实我们还没开始STM32的学习呢!

步骤三,准备几个常用的文档,比如《STM32的用户手册》,《STM32固件库使用手册》等文档。用于平时查阅。这些文档,在光盘中的芯片手册目录中均可找到。

步骤四,开始查看例程的编写,看看例程是如何写的,自己可否修改下例程,达到自己想要的效果呢?芯达STM32开发板的光盘中为大家提供了丰富的例程代码,可以参考。您一定可以修改出更精彩的例程!

步骤五,Ucos-II的移植,是否需要试一下?
恭喜你,至此,你已经可以自如进行独立的开发了。最后一步,给自己一个目标(项目),把它实现出来!

再次强调,以上只是一个学习STM32的思路,供大家参考。下面列出了前面关键的步骤,希望大家能尽快入门。后续的每个模块的编程,请参考神舟I号(103RBT),神舟II号(103vct),神舟III号(103zet),神舟IV号(103vct)中任何一款的入门手册,官方网址
armjishu.com上有下载的,大家可以参考参考。

第1步:熟悉调试软件

对初学者来说,我们至少需要安装两个软件:J-Link驱动软件、MDK(就是原来的Keil)软件。这两个软件在安装软件的过程可以查看神舟开发板用户手册,这里不再重复,大家可以参考我们推出的教程《如何安装J-Link驱动软件》以及《如何安装MDK(Keil)软件》。如何验证自己已经熟悉调试软件的操作了呢?很简单,神舟STM32开发板光盘里附带了很多HEX格式的文件,可以选择一些HEX文件,来观察运行结果。比如LED灯的例程HEX文件,下载到神舟STM32开发板中,观察两个LED灯的闪烁情况。灯在闪烁,就说明你刚才的操作已经把HEX文件烧写到闪存中了。

该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别问题所在,并独立解决。

第2步:GPIO编程

这是第一次接触固件库的编程,一定要硬着头皮去了解固件库。建议大家尽量去用固件库。而不是避开固件库自己写代码——这样只能在学习中才会发生。实际的项目中,代码成百上千个,如何一个一个自己写?调用固件库中的函数来完成,才是王者之道。
GPIO本身的编程实际上很简单:
1、设置GPIO口的引脚为输入或者输出模式。我们在进行点灯代码的时候,一般设置为推挽输出模式。
2、操作寄存器,往寄存器里置1或者清零操作——这个步骤,固件库已经提供了专门的GPIO_SetBits函数和GPIO_ResetBits函数,我们只要去调用即可实现对IO口的置1和清零。

3、实现多种花样的LED闪动,使得自己熟悉GPIO的编程过程。

该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别问题所在,并独立解决。


第3步:开始全新的STM32深入研究

经过以上调试软件的熟悉和GPIO口的编程调试后,相信您已经对STM32有一定的了解。至少知道如何利用STM32的固件库去写一个代码。OK,下面我们将开始全新的STM32深入研究。在这个阶段,将要接触到串口编程、TFT液晶屏驱动编程、定时器编程、串行外设接口SPI编程、存储器编程、SD卡与文件系统移植、USB读写、UCOS移植等,有精力还可以研究其他外设。


推荐阅读

史海拾趣

协顺电子(Finecables)公司的发展小趣事

协顺电子(Finecables)成立于2003年,当时的中国电子行业正处于快速发展期。公司创始人凭借对市场敏锐的洞察力和对技术的执着追求,决定进入连接器制造领域。在创业初期,公司面临着资金短缺、技术积累不足等挑战。然而,通过不懈的努力和团队的合作,协顺电子成功研发出首批产品,并获得了市场的认可。这一阶段的经历为公司的后续发展奠定了坚实的基础。

CML公司的发展小趣事

CML公司成立于1968年,那是一个半导体技术刚刚起步的年代。公司创始人们洞察到单芯片解决方案的巨大潜力,决心打破当时标准组件组装的常规,着手创建创新的单芯片产品。初创时期,CML面临着资金短缺、技术瓶颈以及市场竞争等多重挑战。然而,正是在这样的环境下,CML凭借对技术的执着和对市场的敏锐洞察,成功推出了首款产品——频率敏感开关。这款产品凭借其卓越的性能和稳定性,迅速在消费产品市场赢得了口碑,为CML的发展奠定了坚实的基础。

Datatronic公司的发展小趣事

Datatronic公司深知人才是企业发展的核心。因此,公司一直注重人才的培养和引进。公司建立了完善的人才培训体系,为员工提供广阔的发展空间和机会。同时,公司还积极引进国内外优秀人才,为公司的技术创新和市场拓展提供了有力支持。这些举措使得Datatronic公司在人才方面形成了竞争优势。

FILTRONIC公司的发展小趣事

在快速发展的同时,FILTRONIC始终将品质管理和客户服务放在首位。公司建立了完善的质量管理体系和客户服务体系,从原材料采购、生产制造到产品检测、售后服务等各个环节都严格把关。同时,FILTRONIC还积极倾听客户需求,不断优化产品和服务,以满足客户不断变化的需求。这些努力使得FILTRONIC在客户中树立了良好的口碑和品牌形象。

DAICO公司的发展小趣事

DAICO公司成立于XXXX年,最初是一家位于加利福尼亚的小型私营公司。在公司成立的初期,DAICO专注于研发和生产中频/射频和微波控制产品,以及放大器。这些产品主要用于国防电子和航空航天领域,为DAICO在电子行业中打下了坚实的基础。

ATOP_Technologies公司的发展小趣事

随着技术的不断进步,ATOP Technologies意识到要想在激烈的市场竞争中保持领先地位,必须不断进行技术创新和产品升级。因此,公司加大了在研发方面的投入,积极引进高端人才,加强与高校和研究机构的合作。经过多年的努力,ATOP Technologies成功开发出了一系列具有自主知识产权的工业自动化产品,并在市场上取得了良好的口碑。

问答坊 | AI 解惑

SoSO说坛子里用热转印的不多, 发一个昨天晚上刚刚完成的热转印小板分享一下

起因:工作上需要,做一个加速度传感器的实验 投PCB厂家做板 周期最快得1周(加急),平时1-2周            耽误开发周期,而且还花不少开模费。无奈热转印  挑战下QFN封装的极限! 时间:0604 ...…

查看全部问答>

模拟电子

模拟电子电子书,需要的快下哦,记得下了在顶顶哈…

查看全部问答>

学FPGA的一点心得

从去年开始学FPGA,以前一直做DSP,但因为项目的需要,在一个应用中只有FPGA才能解决问题,所以硬着头皮上FPGA,又因为结项目的时间比较紧,所以主要以解决问题为目的,说真的,项目做下来写了四千多行的代码,达到了设计目标,但对FPGA学习还不够系统,也正进 ...…

查看全部问答>

传感器专题 (刚才的没传上)

本帖最后由 paulhyde 于 2014-9-15 09:21 编辑 大家一起努力吧  …

查看全部问答>

C语言高效编程的几招

C语言高效编程的几招…

查看全部问答>

C6000板子开发调试点滴经验分享

近来做了个C6711板子,调试过程遇到的问题不少,现在说下个人体会,刚开始DSP板老连不上仿真器,RESET#,CLKMODE,NMI等都查过了,很正常,又怀疑是某些配置脚错了,试过很多不同组合都不行,郁闷了很久,,后来同学在打开CCS的同时帮按了下DSP板子 ...…

查看全部问答>

关于手持设备锂电池管理驱动的问题

大家好,我现在做一款手持机,锂电池供电;了解了一下wince的电源管理驱动,目前我的理解是在BatteryPDDGetStatus函数里填充一下电池结构信息就可以了,这样MDD层就可以根据该结构提供电量查看,电量报警等功能;但是我在调试的时候却发现BatteryPD ...…

查看全部问答>

伟福仿真器 VW.EXE 支持 V8,V9 有那么难吗?

别家的仿真器都已经支持 Keil C  V8~9 了,为什么伟福的仿真器还停留在V4~5 从 WAVE6000 玩到 V8,都已经快 10 个年头了,伟福还是没有任何改善? …

查看全部问答>