- UID
- 850901
|
在第二章,我们已经谈及到学习需要计划。那么,在这章节,我们就来详细
地阐述这个计划—— 仅供参考。笔者是嵌入式爱好者,也是学习者,不是高手,
是菜鸟,高级菜鸟。
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 的思路,供大家参考。下面列出了前
面关键的步骤,希望大家能尽快入门。
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 的高手! |
|